나에게 필요한 지식과 기술을 검색해 보세요.

GoF 디자인 패턴! 이렇게 활용한다: C++로 배우는 패턴의 이해와 활용

지은이

장세찬

출간일

2004.05.18

레벨

중고급

평점

3.8(5명)

정가

28,000

판매가

25,200

총 결제 금액

10%

25,200

적립 예정

1,260P

실제로 컴파일하고 실행할 수 있는 디자인 패턴의 완전한 구현

  • 문제 유형과 해결 사례를 통해 디자인 패턴의 이해를 높인다.
  • 일반적인 설계와 패턴 활용 설계의 비교를 통해 패턴 활용 능력을 자연스럽게 익힌다.
  • 변경된 설계 상황에서 최적의 패턴 활용을 익힐 수 있다.
  • 패턴을 사용한 완전 소스를 한빛 사이트를 통해서 제공한다.

패턴별 6단계 적용 방법으로 현장에서 발생하는 문제를 해결한다!

실제적인 문제 사례를 구체적으로 제시한 다음, 이 문제를 해결하기 위해 생각할 수 있는 방법은 무엇인지 또 그렇게 생각한 방법이 어떤 문제가 있으며 그 문제를 해결하기 위해서는 어떻게 해야 하는지 등을 따져봄으로써 해당 디자인 패턴이 가장 적절한 설계임을 제시한다. 또한 C++ 언어를 기반으로, 주어진 문제를 디자인 패턴을 활용해서 해결한 완전한 소스코드도 제공한다.

이 책에서는 각 패턴에 대해 다음과 같은 단계로 설명한다.

문제 사례 설명
GoF의 23가지 디자인 패턴이 어떤 문제를 해결하기 위해 만들어졌는지 확실히 알 수 있도록 주어진 문제 유형에 대해 철저히 분석한다.

 
패턴을 활용한 해결 방식
주어진 문제를 해결할 때 일반적으로 쉽게 떠올릴 수 있는 설계를 먼저 살펴보고 문제를 해결할 수 있는 가장 적합한 디자인 패턴을 적용한다.

 
해당 패턴 설명
문제 해결을 위한 디자인 패턴을 살펴봄으로써, 패턴의 실제 내용과 유도 과정, 문제 해결 능력을 체득할 수 있다.

 
패턴을 활용한 완전소스
실제 실행 가능한 프로그램을 통해 구체적으로 디자인 패턴에 대해 이해할 수 있도록 C++로 작성한 완전 소스를 분석한다.

 
추가로 발생하는 유사문제 제시
최적의 설계라고 생각했던 디자인 패턴도 다른 문제를 야기할 수 있음을 언급하고 추가로 발생할 수 있는 유사 문제를 예측과 대비할 수 있는 능력을 길러준다.

 
활용한 패턴 정리
문제 해결에 활용한 패턴을 정리하고 장단점을 구체적으로 살펴보았다.

저자

목차

PART 1. 소프트웨어 개발과 디자인 패턴

Chapter 1. 소프트웨어 개발과 WHAT-WHY-HOW 생각 모델 
소프트웨어 개발 기준 개념 또는 철학 
소프트웨어 개발 과정 
최적의 해결책 
What-Why-How 생각 모델 

Chapter 2. 소프트웨어 설계 및 디자인 패턴 
소프트웨어 설계 
좋은 소프트웨어 설계의 특성 
좋은 소프트웨어를 설계하기 위한 도구 
디자인 패턴의 정의 및 유용성 
디자인 패턴 이해와 활용을 위한 이 책의 접근 방법 

PART 2. 객체 생성을 위한 디자인 패턴 

Chapter 3. 제품군별 객체 생성 문제 : Abstract Factory 패턴
문제 사례 설명 
다양한 접근 방법 및 Abstract Factory 패턴 
기본적인 방법: 조건 비교 방식 
좀더 나은 방법: 객체 생성 전담 클래스 활용 방식 
패턴 활용 방법: Abstract Factory 패턴 
샘플 코드 
구현 관련 사항
Singleton 패턴을 활용한 구현 
Prototype 패턴을 활용한 구현 
새로운 제품 종류의 추가시 문제 해결 방법 
Abstract Factory 패턴 정리 

Chapter 4. 부분 부분 생성을 통한 전체 객체 생성 문제 : Builder 패턴
문제 사례 설명 
다양한 접근 방법 및 Builder 패턴 
기본적인 방법: 함수 형태 접근 방식 
좀더 나은 방법: 번역 전담 클래스 활용 방식 
패턴 활용 방법: Builder 패턴 
샘플 코드 
구현 관련 사항
Builder 패턴 정리 

Chapter 5. 대행 함수를 통한 객체 생성 문제 : Factory Method 패턴
문제 사례 설명 
다양한 접근 방법 및 Factory Method 패턴 
기본적인 방법: 클래스별 멤버 함수 구현 방식 
패턴 활용 방법: Factory Method 패턴 
샘플 코드 
구현 관련 사항
Factory Method 패턴 정리 

Chapter 6. 복제를 통한 객체 생성 문제 : Prototype 패턴
문제 사례 설명 
다양한 접근 방법 및 Prototype 패턴 
기본적인 방법: 직접적인 객체 생성 방식 
좀더 나은 방법: 객체 생성 대행 함수 활용 방식
패턴 활용 방법: Prototype 패턴 
샘플 코드 
구현 관련 사항
Prototype 패턴 정리 

Chapter 7. 최대 N개로 객체 생성을 제한하는 문제 : Singleton 패턴
문제 사례 설명 
다양한 접근 방법 및 Singleton 패턴 
기본적인 방법: 전역 변수에 의한 객체 생성, 관리 
패턴 활용 방법: Singleton 패턴 
샘플 코드 
구현 관련 사항
Singleton 패턴 정리 

Chapter 8. 객체 생성을 위한 디자인 패턴 정리 

PART 3. 구조 개선을 위한 디자인 패턴 

Chapter 9. 기존 모듈 재사용을 위한 인터페이스 변경 문제 : Adapter 패턴
문제 사례 설명 
다양한 접근 방법 및 Adapter 패턴 
기본적인 방법: Client에 의한 구분 사용 
패턴 활용 방법: Adapter 패턴 
샘플 코드 
구현 관련 사항
Adapter 패턴 정리 

Chapter 10. 인터페이스와 구현의 명확한 분리 문제 : Bridge 패턴
문제 사례 설명 
다양한 접근 방법 및 Bridge 패턴 
기본적인 방법: #ifdef ~ #else ~ #endif 적용 방식 
좀더 나은 방법: 플랫폼별 하위 클래스 정의 
패턴 활용 방법: Bridge 패턴 
샘플 코드 
구현 관련 사항
Bridge 패턴 정리 

Chapter 11. 부분-전체 관계 구조 취급 문제 : Composite 패턴
문제 사례 설명 
다양한 접근 방법 및 Composite 패턴 
기본적인 방법: 서로 다른 자료형을 활용 방식 
패턴 활용 방법: Composite 패턴 
샘플 코드 
구현 관련 사항
Composite 패턴 정리 

Chapter 12. 특정 객체의 기능 동적 추가, 삭제 문제 : Decorator 패턴
문제 사례 설명 
다양한 접근 방법 및 Decorator 패턴 
기본적인 방법: 클래스 재정의를 통한 객체 기능 조정 방법 
또 다른 방법: 클래스 상속을 통한 객체 기능 조정 방법 
패턴 활용 방법: Decorator 패턴 
샘플 코드 
구현 관련 사항
Decorator 패턴 정리 

Chapter 13. 명확한 서브시스템 정의 문제 : Facade 패턴
문제 사례 설명 
다양한 접근 방법 및 Facade 패턴 
기본적인 방법: 클래스들의 직접 활용 방법 
좀더 나은 방법: Proxy 패턴 
패턴 활용 방법: Facade 패턴 
샘플 코드 
구현 관련 사항
Facade 패턴 정리 

Chapter 14. 객체의 공유 문제 : Flyweight 패턴
문제 사례 설명 
다양한 접근 방법 및 Flyweight 패턴 
기본적인 방법: 화면 관리 객체 정의 및 활용 방식
패턴 활용 방법: Flyweight 패턴 
샘플 코드 
구현 관련 사항
Flyweight 패턴 정리 

Chapter 15. 대리 객체를 통한 작업 수행 문제 : Proxy 패턴
문제 사례 설명 
다양한 접근 방법 및 Proxy 패턴 
기본적인 방법: 단순 캐싱 방식 
패턴 활용 방식: Proxy 패턴 
샘플 코드 
구현 관련 사항
Proxy 패턴 정리 

Chapter 16. 구조 개선을 위한 디자인 패턴 정리 

PART 4. 행위 수행 개선을 위한 디자인 패턴 

Chapter 17. 수행 가능 객체까지 요청 전파 문제 : Chain of Responsibility 패턴
문제 사례 설명 
다양한 접근 방법 및 Chain of Responsibility 패턴 
기본적인 방법: 전담 객체 정의 방식 
패턴 활용 방식: Chain of Responsibility 패턴 
샘플 코드 
구현 관련 사항
Chain of Responsibility 패턴 정리 

Chapter 18. 수행할 작업의 일반화 문제 : Command 패턴
문제 사례 설명 
다양한 접근 방법 및 Command 패턴 
기본적인 방법: 요청 종류에 따른 분기 방식 
패턴 활용 방식: Command 패턴 
샘플 코드 
구현 관련 사항
Command 패턴 정리 

Chapter 19. 간단한 문법에 기반한 검증 및 작업 처리 문제 : Interpreter 패턴
문제 사례 설명 
다양한 접근 방법 및 Interpreter 패턴 
기본적인 방법: 각각 독립된 클래스를 통한 구현 방식 
패턴 활용 방식: Interpreter 패턴 
샘플 코드 
구현 관련 사항
Interpreter 패턴 정리 

Chapter 20. 동일 자료형의 여러 객체에 대한 순차적 접근 문제 : Iterator 패턴
문제 사례 설명 
다양한 접근 방법 및 Iterator 패턴 
기본적인 방법: 리스트 자체를 클래스로 정의하는 방법 
패턴 활용 방식: Iterator 패턴 
샘플 코드 
구현 관련 사항
Iterator 패턴 정리

Chapter 21. 복잡한 M:N 객체 관계의 완화 문제 : Mediator 패턴
문제 사례 설명 
다양한 접근 방법 및 Mediator 패턴 
기본적인 방법: M:N 관계 적용 방식
패턴 활용 방식: Mediator 패턴
샘플 코드 
구현 관련 사항
Mediator 패턴 정리

Chapter 22. 객체의 이전 상태 복원 문제 : Memento 패턴
문제 사례 설명 
다양한 접근 방법 및 Memento 패턴
기본적인 방법: 계산을 통한 이전 상태 복원 방식
패턴 활용 방식: Memento 패턴 
샘플 코드 
구현 관련 사항
Memento 패턴 정리 

Chapter 23. ONE SOURCE MULTIPLE USE 문제 : Observer 패턴
문제 사례 설명 
다양한 접근 방법 및 Observer 패턴
기본적인 방법: 원본 데이터에 대한 직접적인 참조 방식
패턴 활용 방식: Observer 패턴 
샘플 코드 
구현 관련 사항
Observer 패턴 정리

Chapter 24. 객체 상태 추가에 따른 행위 수행 변경 문제 : State 패턴
문제 사례 설명 
다양한 접근 방법 및 State 패턴 
기본적인 방법: 상태 비교에 따른 행위 변경 방식
패턴 활용 방식: State 패턴 
샘플 코드 
구현 관련 사항
State 패턴 정리 

Chapter 25. 동일 목적 알고리즘의 동적 적용 문제 : Strategy 패턴
문제 사례 설명 
다양한 접근 방법 및 Strategy 패턴
기본적인 방법: 분기문에 의한 알고리즘 선택 적용 방식
패턴 활용 방식: Strategy 패턴 
샘플 코드 
구현 관련 사항
Strategy 패턴 정리

Chapter 26. 알고리즘 기본 골격 재사용과 상세 구현 변경 문제 : Template Method 패턴
문제 사례 설명 
다양한 접근 방법 및 Template Method 패턴 
기본적인 방법: 서로 독립된 클래스 활용 방식
패턴 활용 방식: Template Method 패턴 
샘플 코드 
구현 관련 사항
Template Method 패턴 정리 

Chapter 27. 작업 종류를 효율적으로 추가, 변경 문제 : Visitor 패턴
문제 사례 설명 
다양한 접근 방법 및 Visitor 패턴 
기본적인 방법: 작업 대상 클래스의 변경, 확장 방식
패턴 활용 방식: Visitor 패턴 
샘플 코드 
구현 관련 사항
Visitor 패턴 정리 

Chapter 28. 행위 수행 개선을 위한 디자인 패턴 정리 

PART 5. 디자인 패턴 활용 

Chapter 29. 디자인 패턴 요약 정리 

Chapter 30. 디자인 패턴 활용

리뷰

28,000

10%

25,200