기획의도 및 타깃 프로그램을 개발할 때 예전과 같은 작업을 반복하고 있다는 느낌이 들 때가 있습니다. 경험이 쌓일수록 이러한 자신만의 패턴이 머리 속에 축적되고, 그 패턴을 다음 개발에 적용할 수 있게 됩니다. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides 4명은 개발자의 '경험'이나 '내적인 축적'을 <디자인 패턴>이라는 형태로 정리하였습니다. 이 4명을 the Gang of Four 또는 GoF라고 부릅니다. 이 책에서는 자바 언어를 통해 GoF가 정리한 23개의 디자인 패턴을 하나씩 알기 쉽게 설명하고 있습니다. 이전 버전에서 다소 부족했던 설명과 수많은 독자들의 피드백을 반영하여 구성과 내용을 전면적으로 바꾼 ‘개정판’으로 새롭게 구성하였습니다. 이 책은 디자인 패턴의 책이지만, Java 언어의 기능에 관한 보충적인 해설도 하고 있기 때문에 읽는 동안에 Java에 대한 이해도 깊어질 것입니다. 특히 추상 클래스나 인터페이스의 목적을 정확하게 이해하지 못했던 독자에게는 크게 도움이 될 것입니다. 디자인 패턴과 객체지향에 흥미가 있는 사람, 추상 클래스나 인터페이스에 대한 이해가 부족하다고 느끼는 자바 프로그래머에게 추천합니다.
개요 및 내용 이 책은 디자인 패턴의 입문서입니다. GoF가 정리한 23개의 디자인 패턴을 하나씩 다루면서 객체 지향을 잘 모르는 초보자도 이해하기 쉽도록 정리하고 있습니다. 단순한 이론이나 논리을 제시하는 것이 아니라 패턴을 사용한 구체적인 프로그램을 Java 언어로 기술하여 실제로 동작시키고 있습니다. 디자인 패턴은 먼 장래를 위해 배우는 것이 아닙니다. 우리들이 매일 사용하고 있는 프로그램을 새로운 관점에서 바라볼 수 있게 해주고, 재사용하기 쉽고, 기능 확장을 손쉽게 하는 소프트웨어를 만들기 위한 유익한 기법입니다.
특징 또는 강점 - GoF의 23개 디자인 패턴에 대해서 Java 언어로 만들어진 구체적인 예제 프로그램을 통해 알기 쉽게 설명합니다. 대부분의 예제 프로그램은 100줄 정도의 길지 않은 구성으로 되어있어 초보자도 이해할 수 있습니다. - 어렵게 느낄 수 있는 디자인 패턴의 용어를 쉬운 설명과 패턴을 직관적으로 표현한 일러스트를 통해 보다 친숙하게 접근할 수 있습니다. 또한 디자인 패턴의 해설뿐 아니라 Java 언어를 깊이 알기 위한 다양한 정보도 제시합니다. -디자인 패턴은 카탈로그를 통째로 암기하기 위해 있는 것이 아닙니다. 프로그램을 읽어 패턴을 파악한 후, 프로그래밍을 할 때 패턴을 적용하는 연습을 할 필요가 있습니다. 이 책에서는 패턴을 익히기 위한 연습문제와 해답을 싣고 있습니다.
Chapter 01 Iterator - 순서대로 지정해서 처리하기 복수의 요소가 모여 있는 중에서 요소를 하나씩 꺼내는 Iterator 패턴에 대해서 배웁니다.
Chapter 02 Adapter - 바꿔서 재이용하기 서로 다른 인터페이스(API)를 갖는 클래스들을 연결하는 Adapter 패턴에 대해서 배웁니다.
Chapter 03 Template Method - 하위 클래스에서 구체적으로 처리하기 상위 클래스에서 처리의 뼈대를 세우고, 구체적인 처리를 하위 클래스에서 실행하는 Template Method 패턴에 대해서 배웁니다.
Chapter 04 Factory Method - 하위 클래스에서 인스턴스 만들기 상위 클래스에서 인스턴스 작성법의 뼈대를 세우고, 구체적인 작성은 하위 클래스에서 실행하는 Factory Method 패턴에 대해서 배웁니다.
Chapter 05 Singleton - 인스턴스를 한 개만 만들기 인스턴스가 하나만 존재하는 Singleton 패턴에 대해서 배웁니다.
Chapter 06 Prototype - 복사해서 인스턴스 만들기 모형이 되는 인스턴스를 복사해서 인스턴스를 만드는 Prototype 패턴에 대해서 배웁니다.
Chapter 07 Builder - 복잡한 인스턴스 조립하기 복잡한 인스턴스를 단계적으로 조립하는 Builder 패턴에 대해서 배웁니다.
Chapter 08 Abstarct Factory - 관련 부품을 조합해서 제품 만들기 공장과 같이 부품을 조합해서 인스턴스 생성을 실행하는 Abstract Factory 패턴에 대해서 배웁니다.
Chapter 09 Bridge - 기능 계층과 구현 계층 분리하기 2종류의 확장이 혼재하는 프로그램을 기능의 계층과 구현의 계층으로 분리하고, 그 사이를 연결하는 Bridge 패턴에 대해서 배웁니다.
Chapter 10 Strategy - 알고리즘을 모두 바꾸기 알고리즘을 전부 교체해서 개량하기 쉽도록 하는 Strategy 패턴에 대해서 배웁니다.
Chapter 11 Composite - 그릇과 내용물을 동일시하기 그릇과 내용물을 동일시해서, 재귀적인 구조를 구축하는 Composite 패턴에 대해서 배웁니다.
Chapter 12 Decorator - 장식과 내용물을 동일시하기 장식과 내용물을 동일시해서 장식을 여러 겹 중복되게 하는 Decorator 패턴에 대해서 배웁니다.
Chapter 13 Visitor - 데이터 구조를 돌아다니면서 처리하기 데이터 구조를 돌아다니면서 동일한 조작을 반복해서 적용하는 Visitor 패턴에 대해서 배웁니다.
Chapter 14 Chain of Responsibility - 책임 떠넘기기 복수의 오브젝트(객체)가 연결되어 있는 내부의 어딘가에서 일을 수행하는 Chain of Responsibility 패턴에 대해서 배웁니다.
Chapter 15 Facade - 단순한 창구 복잡하게 얽힌 클래스를 개별적으로 제어하는 것이 아니라, 창구 역할을 하는 클래스를 하나 배치해서 시스템 전체의 조작성을 좋게 하는 Facade 패턴에 대해서 배웁니다.
Chapter 16 Mediator - 중개인을 통해서 처리하기 복수의 클래스가 상호간에 직접 의사 소통을 하는 것이 아니라, 상담역을 하는 클래스를 하나 준비하고, 그 클래스하고만 의사 소통을 하게 해서 프로그램을 단순하게 만드는 Mediator 패턴에 대해서 배웁니다.
Chapter 17 Observer - 상태의 변화를 알려주기 상태가 변화하는 클래스와 그변화를 통지받는 클래스를 분리해서 생각하는 Observer 패턴에 대해서 배웁니다.
Chapter 18 Memento - 상태를 저장하기 현재의 상태를 보존하고 필요할 때 실행을 취소해서 복귀시킬 수 있는 Memento 패턴에 대해서 배웁니다.
Chapter 19 State - 상태를 클래스로 표현하기 상태를 클래스로 표현하고 상태에 적합한 switch 문을 줄이는 State 패턴에 대해서 배웁니다.
Chapter 20 Flyweight - 동일한 것을 공유해서 낭비 없애기 복수의 장소에서 동일한 것이 등장할 때 그것들을 공유해서 낭비를 없애는 Flyweight 패턴에 대해서 배웁니다.
Chapter 21 Proxy - 필요해지면 만들기 정말로 목적한 것이 필요하게 될 때까지 대리인을 사용해서 처리를 진행시키는 Proxy 패턴에 대해서 배웁니다.
Chapter 22 Command - 명령을 클래스로 하기 요구나 명령을 형태로 만들어서 클래스로 표현하는 Command 패턴에 대해서 배웁니다.
Chapter 23 Interpreter - 문법규칙을 클래스로 표현하기 문법 규칙을 클래스로 표현하는 Interpreter 패턴에 대해서 배웁니다. [인터파크 제공] |