chapter 1. 서론

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

Chapter2. 사례 연구: 문서 편집기 설계