▶ 3판에서 달라진 점
ㆍ예제 프로그램을 현대 Java 언어(람다식, 확장 for문, enum형 등)로 업데이트
ㆍ이해하기 쉽게 설명하되 현대의 관점에서 예제와 설명(의존성 주입, 보안 관련 설명 등) 수정
ㆍ고전적인 디자인 패턴 23개는 그대로 다루면서 대응하는 예제 프로그램도 심플하게 유지
▶ 이 책의 독자
ㆍ객체지향에 관심이 있는 사람
ㆍ디자인 패턴에 관심이 있는 사람 (특히 GoF 책을 보고 어렵다고 느낀 사람)
ㆍJava 프로그래머 (특히 추상 클래스나 인터페이스가 잘 이해되지 않는 사람)
▶ 이 책의 구성
Part 1 Iterator - 처리를 반복한다
여러 요소가 모여 있는 집합에서 순서대로 요소를 처리하는 Iterator 패턴을 학습합니다.
Part 2 Adapter - 사이에 끼워 재사용한다
서로 다른 인터페이스(API)의 클래스를 연결하는 Adapter 패턴을 학습합니다
Part 3 Template Method - 하위 클래스에서 구체적으로 처리한다
상위 클래스에서 기능의 뼈대를 정의하고, 하위 클래스에서 세부 처리를 구현하는 Template Method 패턴을 학습합니다.
Part 4 Factory Method - 하위 클래스에서 인스턴스를 만든다
상위 클래스에서는 인스턴스를 생성하는 방법을 결정하고, 하위 클래스에서 인스턴스를 생성하는 Factory Method 패턴을 학습합니다.
Part 5 Singleton - 인스턴스를 단 하나만 만든다
인스턴스가 하나만 존재하는 Singleton 패턴을 학습합니다.
Part 6 Prototype - 복사해서 인스턴스를 만든다
원형이 되는 인스턴스를 복사해서 인스턴스를 만드는 Prototype 패턴을 학습합니다.
Part 7 Builder - 복잡한 인스턴스를 조립한다
복잡한 인스턴스를 단계적으로 조립하는 Builder 패턴을 학습합니다.
Part 8 Abstract Factory - 관련 부품을 조합하여 제품을 만든다
공장처럼 부품을 조합하여 인스턴스를 생성하는 Abstract Factory 패턴을 학습합니다.
Part 9 Bridge - 기능 계층과 구현 계층을 나눈다
두 종류의 확장이 혼재하는 프로그램을 기능 계층과 구현 계층으로 나누고, 그 사이에서 중개 역할을 하는 Bridge 패턴을 학습합니다.
Part 10 Strategy - 알고리즘을 모두 바꾼다
알고리즘을 싹 바꿔서 개선하기 쉽게 만드는 Strategy 패턴을 학습합니다.
Part 11 Composite - 그릇과 내용물을 동일시한다
그릇과 내용물을 동일시하여 재귀적인 구조를 구축하는 Composite 패턴을 학습합니다.
Part 12 Decorator - 장식틀과 내용물을 동일시한다
장식과 내용물을 동일시하여 장식틀을 여러 겹으로 겹치는 Decorator 패턴을 학습합니다.
Part 13 Visitor - 데이터 구조를 돌아다니면서 처리한다
데이터 구조를 돌아다니면서 같은 조작을 반복해서 적용하는 Visitor 패턴을 학습합니다.
Part 14 Chain of Responsibility - 책임을 떠넘긴다
복수의 객체가 연결된 체인 안에서 작업하는 Chain of Responsibility 패턴을 학습합니다.
Part 15 Facade - 단순한 창구를 만든다
복잡하게 얽힌 클래스를 개별적으로 제어하는 것이 아니라, 창구 역할을 하는 클래스를 하나 배치함으로써 시스템 전체의 조작성을 좋게 만드는 Facade 패턴을 학습합니다.
Part 16 Mediator - 중재자를 통해 처리한다
복수의 클래스가 서로 직접 소통하지 않고, 중개 역할을 하는 클래스를 하나 준비해 그 클래스하고만 의사 소통을 하게 해서 프로그램을 단순하게 만드는 Mediator 패턴을 학습합니다.
Part 17 Observer - 상태 변화를 알려 준다
상태가 변화하는 클래스와 그 변화를 통지받는 클래스를 분리해 생각하는 Observer 패턴을 학습합니다.
Part 18 Memento - 상태를 저장한다
현재 상태를 저장하고 필요할 때 복귀시켜, Undo 기능을 할 수 있게 하는 Memento 패턴을 학습합니다.
Part 19 State - 상태를 클래스로 표현한다
상태를 클래스로 표현하고 상태에 따른 분기 처리를 줄여 주는 State 패턴을 학습합니다.
Part 20 Flyweight - 같은 것은 공유해서 낭비를 없앤다
여러 곳에서 같은 것이 등장할 때 그것들을 공유해서 낭비를 없애는 Flyweight 패턴을 학습합니다.
Part 21 Proxy - 필요해지면 만든다
정말로 목적한 것이 필요해질 때까지는 대리인을 시켜 처리를 진행하는 Proxy 패턴을 학습합니다.
Part 22 Command - 명령을 클래스로 표현한다
요구나 명령을 형태로 만들어 클래스로 표현하는 Command 패턴을 학습합니다.
Part 23 Interpreter - 문법 규칙을 클래스로 표현한다
문법 규칙을 클래스로 표현하는 Interpreter 패턴을 학습합니다.