쉽게 배워 바로 써먹는 디자인 패턴
객체지향 프로그래밍 설계 원칙, 패턴을 알면 개발이 보인다
디자인 패턴은 어느 날 갑자기 생겨난 방식이 아니다. 객체지향 개발 과정에서 겪는 다양한 이슈를 종합해보면 서로 비슷한 유형의 문제다. 개발자들은 서로 자신의 경험을 바탕으로 문제를 해결해나갔다. GoF는 객체지향 설계 시 발생하는 문제점을 목록화하여 24가지 패턴으로 정리한다.
디자인 패턴의 개념과 동작 원리를 설명한다. 각 장을 24가지 패턴으로 구성하였으며 누구나 이해할 수 있는 쉬운 예제와 눈높이를 낮춘 설명은 디자인 패턴을 배우고 학습하는 데 유용하다. 객체지향을 이해하고 프레임워크를 학습하려는 개발자에게 유익한 가이드가 될 것이다
전기전자를 전공하고 마이크로프로세서, 하드웨어 설계 및 Firmware, 로봇 개발 등을 주로 하였습니다. 또한 산업용 레이저 프린터, ARM, 언어분석, 알고리즘 개발을 하였습니다. 외국계 기업에서 Linux 운영체제, 백업 및 서버 가상화 등 다양한 비즈니스 경험을 거쳐 최근에는 웹 및 모바일과 관련한 개발 활동을 하고 있습니다. 현재는 경험과 지식을 정리하고 후배들에게 전달하기 위해서 집필 활동에 전념하고 있습니다.
CHAPTER 0 디자인 패턴
0.1 패턴
0.2 소프트웨어 공학
0.3 설계 원칙
0.4 GoF
0.5 패턴의 요소
0.6 유지 보수
0.7 정리
[PART 1 생성 패턴 - 추상화를 통해 객체 생성하기]
CHAPTER 1 팩토리 패턴
1.1 클래스와 객체지향
1.2 의존성
1.3 의존성 주입
1.4 의존 관계의 문제점
1.5 팩토리 패턴
1.6 단순 팩토리
1.7 장점과 단점
1.8 관련 패턴
1.9 정리
CHAPTER 2 싱글턴 패턴
2.1 객체 생성
2.2 유일한 객체
2.3 싱글턴
2.4 싱글턴 설계
2.5 인스턴스 생성
2.6 정적 클래스
2.7 싱글턴 확장
2.8 자원 처리
2.9 관련 패턴
2.10 정리
CHAPTER 3 팩토리 메서드 패턴
3.1 추상화
3.2 패턴 확장
3.3 상위 클래스
3.4 하위 클래스
3.5 매개변수
3.6 관련 패턴
3.7 정리
CHAPTER 4 추상 팩토리 패턴
4.1 팩토리 메서드
4.2 그룹
4.3 팩토리 그룹
4.4 공장 추가
4.5 부품 추가 실습
4.6 패턴 결합
4.7 장점과 단점
4.8 관련 패턴
4.9 정리
CHAPTER 5 빌더 패턴
5.1 건축물
5.2 객체 실습
5.3 빌더
5.4 알고리즘
5.5 생성 요청
5.6 관련 패턴
5.7 정리
CHAPTER 6 프로토타입 패턴
6.1 생성
6.2 복사
6.3 프로토타입 패턴
6.4 특징
6.5 관련 패턴
6.6 정리
[PART 2 구조 패턴 - 상속과 합성을 사용해 객체 확장하기]
CHAPTER 7 어댑터 패턴
7.1 오래된 코드
7.2 잘못된 코드
7.3 어댑터
7.4 클래스 어댑터
7.5 객체 어댑터
7.6 설계
7.7 관련 패턴
7.8 정리
CHAPTER 8 브리지 패턴
8.1 복잡한 코드
8.2 상속
8.3 패턴 설계 1
8.4 패턴 설계 2
8.5 장점과 단점
8.6 관련 패턴
8.7 정리
CHAPTER 9 복합체 패턴
9.1 객체를 포함하는 객체
9.2 복합체의 구조적 특징
9.3 투명성을 활용한 동일한 설계
9.4 추상화를 통한 일반화 작업
9.5 Leaf
9.6 Composite
9.7 패턴 결합
9.8 적용 사례 1
9.9 적용 사례 2
9.10 적용 사례 3
9.11 장단점 및 결과
9.12 관련 패턴
9.13 정리
CHAPTER 10 장식자 패턴
10.1 기능 추가
10.2 조건 추가
10.3 확장
10.4 객체에 추가 장식하기
10.5 기본 실습
10.6 장단점 및 결과
10.7 관련 패턴
10.8 정리
CHAPTER 11 파사드 패턴
11.1 협업을 위한 분리 작업
11.2 파사드 패턴을 응용한 API
11.3 파사드를 이용한 단순화
11.4 최소 지식 원칙
11.5 기본 실습
11.6 파사드 패턴의 효과
11.7 관련 패턴
11.8 정리
CHAPTER 12 플라이웨이트 패턴
12.1 메모리 자원
12.2 자원 공유
12.3 상태 구분
12.4 패턴 실습
12.5 관련 패턴
12.6 정리
CHAPTER 13 프록시 패턴
13.1 객체를 대행하는 프록시
13.2 객체 가로채기
13.3 객체 분리
13.4 프록시 생성
13.5 행위를 처리하는 핸들러
13.6 동적 프록시
13.7 원격 프록시
13.8 가상 프록시
13.9 보호용 프록시
13.10 스마트 참조자
13.11 정리
[PART 3 행동 패턴 - 복합 구조로 객체의 책임 분산하기]
CHAPTER 14 반복자 패턴
14.1 객체의 집합
14.2 배열
14.3 집합체
14.4 반복자
14.5 작업 분할
14.6 관련 패턴
14.7 정리
CHAPTER 15 명령 패턴
15.1 명령 처리
15.2 명령 패턴의 구성과 특징
15.3 인터페이스
15.4 명령
15.5 리시버
15.6 인보커
15.7 클라이언트
15.8 undo
15.9 장단점
15.10 관련 패턴
15.11 정리
CHAPTER 16 방문자 패턴
16.1 데이터 처리
16.2 분리
16.3 원소 객체
16.4 방문자
16.5 반복자
16.6 관련 패턴
16.7 정리
CHAPTER 17 체인 패턴
17.1 제어문
17.2 동작조건
17.3 행동 분리
17.4 사슬 연결
17.5 체인 패턴
17.6 미들웨어
17.7 관련 패턴
17.8 정리
CHAPTER 18 감시자 패턴
18.1 감시자
18.2 구성
18.3 관계
18.4 주체
18.5 감시자
18.6 동작 실습
18.7 활용
18.8 관련 패턴
18.9 정리
CHAPTER 19 중재자 패턴
19.1 중재
19.2 중재자
19.3 동료 객체
19.4 기본 실습
19.5 관련 패턴
19.6 정리
CHAPTER 20 상태 패턴
20.1 상태란
20.2 상태 처리
20.3 패턴 구현
20.4 객체 생성
20.5 상태 전환
20.6 실습
20.7 효과
20.8 패턴 유사성
20.9 적용 사례
20.10 정리
CHAPTER 21 메멘토 패턴
21.1 상태 저장
21.2 캡슐화
21.3 메멘토
21.4 Originator 클래스
21.5 CareTaker 클래스
21.6 관련 패턴
21.7 정리
CHAPTER 22 템플릿 메서드 패턴
22.1 프로그램의 구조
22.2 템플릿
22.3 일반화
22.4 추상화
22.5 템플릿 메서드
22.6 의존성 디자인
22.7 관련 패턴
22.8 정리
CHAPTER 23 전략 패턴
23.1 문제
23.2 알고리즘
23.3 분리
23.4 인터페이스
23.5 전략
23.6 전략 실행
23.7 적용 사례
23.8 관련 패턴
23.9 정리
CHAPTER 24 인터프리터 패턴
24.1 언어
24.2 언어 설계
24.3 처리계
24.4 중간 코드
24.5 해석
24.6 클래스 표현
24.7 관련 패턴
24.8 정리