chapter 1. 서론
- 재설계가 필요한 사유…
- 특정 클래에서 객체 생성
- 특정 연산에 대한 의존성
- 하드웨어와 소트웨어 플랫폼에 대한 의존성
- 객체의 표현이나 구현에 대한 의존성
- 알고리즘 의존성
- 높은 결합도
- 서브클래싱을 통한 기능 확장
- 클래스 변경이 편하지 못하점
- 디자인 패턴을 고르는 방법
- 재설계의 원인을 파악
- 패턴이 어떻게 문제를 해결하는지 파악
- 패턴의 의도를 파악
- 설계에서 가변성을 가져야하는 부분 파악
- 디자인 패턴을 통해 다양화할 수 있는 설계 측면
- 생성
- 추상 팩토리: 제품 객체군
- 빌더: 복합 객체 생성 방법
- 팩토리 메서드: 인스턴스화될 객체의 서브 클래스
- 원형: 인스턴스화될 객체 클래스
- 단일체: 클래스의 인스턴스가 하나일 때
- 구조
- 적응자: 객체에 대한 인터페이스
- 가교: 객체 구현
- 복합체: 객체의 합성과 구조
- 장식자: 서브클래싱 없이 객체의 책임성
- 파사드: 서브시스템에 대한 인터페이스
- 플라이급: 객체의 저장 비용
- 프록시: 객체 접근 방법
- 행동
- 책임 연쇄: 요청을 처리하는 객체
- 명령: 요청의 처리 시점과 처리 방법
- 해석자: 언어의 문법과 해석 방법
- 반복자: 집합 객체 요소들의 접근 방법 및 순회 방법
- 중재자: 어떤 객체들이 어떻게 상호작용하는지
- 메멘토: 언제 어떤 정보를 객체의 외부에 저장하는지
- 감시자: 다른 객체에 종속적인 객체 수, 종속적인 객체들의 상태 변경 방법
- 상태: 객체의 상태
- 전략: 알고리즘
- 템플릿 메서드: 알고리즘의 단계
- 방문자: 클래스의 변경 없이 객체에 적용할 수 있는 연산
Chapter2. 사례 연구: 문서 편집기 설계