목차
UML에 대해서 ... 27
UML ... 27
클래스 다이어그램 ... 27
클래스의 관계 ... 32
시퀀스 다이어그램 ... 32
디자인 패턴을 배우기 전에 ... 35
Part 1 디자인 패턴과 친해지기
Chapter 01 Iterator - 순서대로 지정해서 처리하기 ... 39
1 Iterator 패턴 ... 40
2 예제 프로그램 ... 41
3 Iterator 패턴의 등장인물 ... 48
4 독자의 사고를 넓히기 위한 힌트 ... 49
5 관련 패턴 ... 53
연습문제 ... 54
Chapter 02 Adapter - 바꿔서 재이용하기 ... 55
1 Adapter 패턴 ... 56
2 예제 프로그램(1)(상속을 사용한 Adapter 패턴) ... 57
3 예제 프로그램(2)(위임을 사용한 Adapter 패턴) ... 61
4 Adapter 패턴의 등장인물 ... 63
5 독자의 사고를 넓히기 위한 힌트 ... 64
6 관련 패턴 ... 66
연습문제 ... 67
Part 2 하위 클래스에게 위임하기
Chapter 03 Template Method - 하위 클래스에서 구체적으로 처리하기 ... 69
1 Template Method 패턴 ... 70
2 예제 프로그램 ... 71
3 Template Method 패턴의 등장인물 ... 77
4 독자의 사고를 넓히기 위한 힌트 ... 78
5 관련 패턴 ... 79
6 보강 : 클래스 계층과 추상 클래스 ... 80
연습문제 ... 82
Chapter 04 Factory Method - 하위 클래스에서 인스턴스 만들기 ... 83
1 Factory Method 패턴 ... 84
2 예제 프로그램 ... 84
3 Factory Method 패턴의 등장인물 ... 89
4 독자의 사고를 넓히기 위한 힌트 ... 90
5 관련 패턴 ... 93
연습문제 ... 94
Part 3 인스턴스 만들기
Chapter 05 Singleton - 인스턴스를 한 개만 만들기 ... 95
1 Singleton 패턴 ... 96
2 예제 프로그램 ... 96
3 Singleton 패턴의 등장인물 ... 99
4 독자의 사고를 넓히기 위한 힌트 ... 100
5 관련 패턴 ... 100
연습문제 ... 101
Chapter 06 Prototype - 복사해서 인스턴스 만들기 ... 103
1 Prototype 패턴 ... 104
2 예제 프로그램 ... 105
3 Prototype 패턴의 등장인물 ... 112
4 독자의 사고를 넓히기 위한 힌트 ... 113
5 관련 패턴 ... 114
6 보강 : clone 메소드와 java.lang.Cloneable 인터페이스 ... 115
연습문제 ... 118
Chapter 07 Builder - 복잡한 인스턴스 조립하기 ... 119
1 Builder 패턴 ... 120
2 예제 프로그램 ... 120
3 Builder 패턴의 등장인물 ... 128
4 관련 패턴 ... 130
5 독자의 사고를 넓히기 위한 힌트 ... 130
연습문제 ... 133
Chapter 08 Abstarct Factory - 관련 부품을 조합해서 제품 만들기 ... 135
1 Abstract Factroy 패턴 ... 136
2 예제 프로그램 ... 137
3 예제 프로그램에 별도의 구체적인 공장을 추가하기 ... 151
4 Abstract Factory 패턴의 등장인물 ... 155
5 독자의 사고를 넓히기 위한 힌트 ... 157
6 관련 패턴 ... 158
7 보강 : 인스턴스를 만드는 다양한 방법 ... 159
연습문제 ... 161
Part 4 분리해서 생각하기
Chapter 09 Bridge - 기능 계층과 구현 계층 분리하기 ... 163
1 Bridge 패턴 ... 164
2 예제 프로그램 ... 167
3 Bridge 패턴의 등장인물 ... 172
4 독자의 사고를 넓히기 위한 힌트 ... 173
5 관련 패턴 ... 175
연습문제 ... 176
Chapter 10 Strategy - 알고리즘을 모두 바꾸기 ... 177
1 Strategy 패턴 ... 178
2 예제 프로그램 ... 178
3 Strategy 패턴의 등장인물 ... 189
4 독자의 사고를 넓히기 위한 힌트 ... 190
5 관련 패턴 ... 191
연습문제 ... 192
Part 5 동일시하기
Chapter 11 Composite - 그릇과 내용물을 동일시하기 ... 195
1 Composite 패턴 ... 196
2 예제 프로그램 ... 196
3 Composite 패턴의 등장인물 ... 205
4 독자의 사고를 넓히기 위한 힌트 ... 206
5 관련 패턴 ... 209
연습문제 ... 210
Chapter 12 Decorator - 장식과 내용물을 동일시하기 ... 211
1 Decorator 패턴 ... 212
2 예제 프로그램 ... 212
3 Decorator 패턴의 등장인물 ... 220
4 독자의 사고를 넓히기 위한 힌트 ... 222
5 관련 패턴 ... 225
6 보강 : 상속의 동일시와 위임의 동일시 ... 226
연습문제 ... 229
Part 6 구조를 돌아다니기
Chapter 13 Visitor - 데이터 구조를 돌아다니면서 처리하기 ... 231
1 Visitor 패턴 ... 232
2 예제 프로그램 ... 232
3 Visitor 패턴의 등장인물 ... 243
4 독자의 사고를 넓히기 위한 힌트 ... 244
5 관련 패턴 ... 248
연습문제 ... 249
Chapter 14 Chain of Responsibility - 책임 떠넘기기 ... 253
1 Chain of Responsibility 패턴 ... 254
2 예제 프로그램 ... 255
3 Chain of Responsibility 패턴의 등장인물 ... 262
4 독자의 사고를 넓히기 위한 힌트 ... 263
5 관련 패턴 ... 265
연습문제 ... 266
Part 7 단순화하기
Chapter 15 Facade - 단순한 창구 ... 267
1 Facade 패턴 ... 268
2 예제 프로그램 ... 268
3 Facade 패턴의 등장인물 ... 275
4 독자의 사고를 넓혀주기 위한 힌트 ... 276
5 관련 패턴 ... 277
연습문제 ... 279
Chapter 16 Mediator - 중개인을 통해서 처리하기 ... 281
1 Mediator 패턴 ... 282
2 예제 프로그램 ... 283
3 Mediator 패턴의 등장인물 ... 295
4 독자의 사고를 넓히기 위한 힌트 ... 296
5 관련 패턴 ... 298
연습문제 ... 298
Part 8 상태를 관리하기
Chapter 17 Observer - 상태의 변화를 알려주기 ... 299
1 Observer 패턴 ... 300
2 예제 프로그램 ... 300
3 Observer 패턴의 등장인물 ... 306
4 독자의 사고를 넓히기 위한 힌트 ... 307
5 보강 : java.util.Observer 인터페이스 ... 311
6 관련 패턴 ... 312
연습문제 ... 313
Chapter 18 Memento - 상태를 저장하기 ... 315
1 Memento 패턴 ... 316
2 예제 프로그램 ... 317
3 Memento 패턴의 등장인물 ... 324
4 독자의 사고를 넓히기 위한 힌트 ... 326
5 관련 패턴 ... 329
연습문제 ... 330
Chapter 19 State - 상태를 클래스로 표현하기 ... 333
1 State 패턴 ... 334
2 예제 프로그램 ... 334
3 State 패턴의 등장인물 ... 348
4 독자의 사고를 넓히기 위한 힌트 ... 349
5 관련 패턴 ... 354
연습문제 ... 355
Part 9 낭비 없애기
Chapter 20 Flyweight - 동일한 것을 공유해서 낭비 없애기 ... 357
1 Flyweight 패턴 ... 358
2 예제 프로그램 ... 359
3 Flyweight 패턴의 등장인물 ... 367
4 독자의 사고를 넓히기 위한 힌트 ... 368
5 관련 패턴 ... 372
연습문제 ... 373
Chapter 21 Proxy - 필요해지면 만들기 ... 375
1 Proxy 패턴 ... 376
2 예제 프로그램 ... 376
3 Proxy 패턴의 등장인물 ... 383
4 독자의 사고를 넓히기 위한 힌트 ... 384
5 관련 패턴 ... 387
연습문제 ... 388
Part 10 클래스로 표현하기
Chapter 22 Command - 명령을 클래스로 하기 ... 389
1 Command 패턴 ... 390
2 예제 프로그램 ... 390
3 Command 패턴의 등장인물 ... 401
4 독자의 사고를 넓히기 위한 힌트 ... 403
5 관련 패턴 ... 407
연습문제 ... 408
Chapter 23 Interpreter - 문법규칙을 클래스로 표현하기 ... 409
1 Interpreter 패턴 ... 410
2 미니 언어 ... 411
3 예제 프로그램 ... 418
4 Interpreter 패턴의 등장인물 ... 430
5 독자의 사고를 넓히기 위한 힌트 ... 431
6 관련 패턴 ... 433
연습문제 ... 434
Appendix(부록) ... 435
A : 연습문제 해답 ... 436
B : 예제 프로그램의 실행 순서 ... 524
C : GoF에 따른 디자인 패턴의 분류 ... 526
D : 디자인 패턴 Q&A ... 527
E : 참고 문헌 ... 530
Index(찾아보기) ... 531
닫기