오늘은 OOP 세션 2회차가 있었다.
1회차에서 객체지향이 무엇인지에 대해서 다루었다면 오늘은 디자인 패턴에 대한 것이었다.
여러 디자인 패턴이 있는데, 4가지에 대해서 다뤘다.
프로그램 내에서 인스턴스가 하나만 존재해야 하고 어디에서든 인스턴스에 접근할 수 있도록 해주는 패턴.
언제 사용할까: 로그기록 객체, 유저 매니저, 데이터 테이블 정보를 저장하는 클래스(엑스트라 키값 적어두고 사용하는 등)
대략적인 설명을 들으니 업캐스팅 함수 호출이랑 비슷하다는 느낌이다.
언제: 게임 룰을 모드 별로 다르게 적용하고 싶을 때 / 상황에 따라 길찾기 알고리즘을 바꾸고 싶을 때
그냥 리스트에 넣어놓고 호출해주는거랑 비슷한거같은 느낌.
언제: GUI(셋온클릭리스너), 채팅 프로그램
피자 토핑으로 예시.
피자 변수에 객체를 새로 집어넣는데 저게 된다고? 싶었다.
어떻게 동작하는 패턴인지 도무지 감이 안온다. 추가적으로 공부해야겠다.
언제: 인풋스트림?, 자바 I/O
이 패턴이 중요한 이유: 확장성 있게 만들 수 있다.
책 추천: 헤드퍼스트 디자인패턴