第1章 設計模式介紹 1
1.1 為什麼使用模式 1
1.2 為什麼使用設計模式 2
1.3 為什麼使用Java 2
1.4 UML 3
1.5 自我突破 3
1.6 本書的組織方式 3
1.7 歡迎來到Oozinoz公司 4
1.8 小結 5
第一部分 接口型模式
第2章 接口型模式介紹 8
2.1 接口和抽象類 8
2.2 接口和責任 9
2.3 小結 10
2.4 超越普通接口 10
第3章 Adapter (適配器) 模式 11
3.1 接口適配 11
3.2 類和對象適配器 14
3.3 為JTable適配數據 16
3.4 標識適配器 20
3.5 小結 20
第4章 Facade (外觀) 模式 21
4.1 外觀類、工具類和示例類 21
4.2 重構為Facade模式 22
4.3 小結 29
第5章 Composite (組閤) 模式 30
5.1 常見的組閤 30
5.2 Composite模式的遞歸特性 31
5.3 組閤、樹和環 32
5.4 含有環的Composite模式 35
5.5 環的影響 38
5.6 小結 39
第6章 Bridge (橋接) 模式 40
6.1 經典範例:普通抽象 40
6.2 從抽象到Bridge模式 42
6.3 應用Bridge模式的驅動程序 43
6.4 數據庫驅動程序 44
6.5 小結 45
第二部分 責任型模式
第7章 責任型模式介紹 48
7.1 常見的責任型模式 48
7.2 通過可見性屬性控製責任 49
7.3 小結 50
7.4 超越普通責任型模式 50
第8章 Singleton (單例) 模式 51
8.1 Singleton模式機製 51
8.2 單例和綫程 52
8.3 識彆單例 53
8.4 小結 54
第9章 Observer (觀察者) 模式 55
9.1 經典範例:GUI中的Observer模式 55
9.2 模型/視圖/控製器 58
9.3 維護Observable類對象 62
9.4 小結 64
第10章 Mediator (中介者) 模式 65
10.1 經典範例:GUI的Mediator模式 65
10.2 利用Mediator模式管理關係完整性 68
10.3 小結 73
第11章 Proxy (代理) 模式 74
11.1 經典範例:圖像代理 74
11.2 重新思考圖像代理 78
11.3 遠程代理 79
11.4 動態代理 84
11.5 小結 87
第12章 Chain of Responsibility (責任鏈) 模式 88
12.1 常見的責任鏈 88
12.2 重構為Chain of Responsibility模式 89
12.3 固定責任鏈 91
12.4 不帶組閤結構的Chain of Responsibility模式 92
12.5 小結 93
第13章 Flyweight (享元) 模式 94
13.1 不變性 94
13.2 提取享元中不可變的部分 95
13.3 共享享元 96
13.4 小結 99
第三部分 構造型模式
第14章 構造型模式介紹 102
14.1 普通構造的挑戰 102
14.2 小結 103
14.3 超越普通構造 103
第15章 Builder (生成器) 模式 105
15.1 常見的生成器 105
15.2 根據約束構造對象 107
15.3 根據不完整信息構造符閤約束的對象 109
15.4 小結 109
第16章 Factory Method (工廠方法) 模式 110
16.1 經典範例:迭代器 110
16.2 識彆Factory Method模式 111
16.3 決定要實例化的對象 111
16.4 並行層次結構中的Factory Method模式 112
16.5 小結 114
第17章 Abstract Factory (抽象工廠) 模式 115
17.1 經典範例:GUI工具包 115
17.2 抽象工廠和工廠方法 118
17.3 包和抽象工廠 121
17.4 小結 122
第18章 Prototype (原型) 模式 123
18.1 作為工廠的原型 123
18.2 利用剋隆進行原型化 124
18.3 小結 126
第19章 Memento (備忘錄) 模式 127
19.1 經典範例:使用備忘錄實現撤銷操作 127
19.2 備忘錄的持久性 132
19.3 跨越會話的持久性備忘錄 132
19.4 小結 135
第四部分 操作型模式
第20章 操作型模式介紹 138
20.1 操作和方法 138
20.2 簽名 139
20.3 異常 139
20.4 算法和多態性 140
20.5 小結 141
20.6 超越普通操作 141
第21章 Template Method (模闆方法) 模式 142
21.1 經典範例:排序 142
21.2 完成算法 145
21.3 Template Method模式鈎子 147
21.4 重構為Template Method模式 148
21.5 小結 149
第22章 State (狀態) 模式 150
22.1 狀態建模 150
22.2 重構為State模式 153
22.3 使狀態成為常量 156
22.4 小結 157
第23章 Strategy (策略) 模式 158
23.1 策略建模 158
23.2 重構為Strategy模式 160
23.3 比較Strategy模式和State模式 163
23.4 比較Strategy模式和Template Method模式 164
23.5 小結 164
第24章 Command (命令) 模式 165
24.1 經典範例:菜單命令 165
24.2 使用Command模式提供服務 167
24.3 Command模式鈎子 168
24.4 Command模式與其他模式的關係 169
24.5 小結 170
第25章 Interpreter (解釋器) 模式 171
25.1 Interpreter模式範例 171
25.2 解釋器、語言和解析器 180
25.3 小結 180
第五部分 擴展型模式
第26章 擴展型模式介紹 184
26.1 麵嚮對象設計原則 184
26.2 Liskov替換原則 (LSP) 184
26.3 Demeter法則 185
26.4 消除代碼壞味 186
26.5 超越普通的擴展 187
26.6 小結 187
第27章 Decorator (裝飾器) 模式 188
27.1 經典範例:流和輸齣器 188
27.2 函數包裝器 193
27.3 與其他模式相關的Decorator模式 199
27.4 小結 199
第28章 Iterator (迭代器) 模式 200
28.1 常規迭代 200
28.2 綫程安全的迭代 201
28.3 對組閤結構進行迭代 206
28.3.1 組閤枚舉器的深度 211
28.3.2 枚舉葉節點 212
28.4 小結 213
第29章 Visitor (訪問者) 模式 214
29.1 Visitor模式機製 214
29.2 常見的Visitor模式 216
29.3 Visitor模式循環 220
29.4 Visitor模式危機 223
29.5 小結 224
第六部分 附錄
附錄A 指南 226
A.1 從本書中學到更多 226
A.2 理解設計模式的典型範例 226
A.3 在實踐中應用設計模式 227
A.4 不斷地學習 228
附錄B 參考答案 229
B.1 接口型模式介紹 (第2章) 229
B.2 Adapter (適配器) 模式 (第3章) 230
B.3 Fa?ade (外觀) 模式 (第4章) 233
B.4 Composite (組閤) 模式 (第5章) 235
B.5 Bridge (橋接) 模式 (第6章) 237
B.6 責任型模式介紹 (第7章) 239
B.7 Singleton (單例) 模式 (第8章) 240
B.8 Observer (觀察者) 模式 (第9章) 241
B.9 Mediator (中介者) 模式 (第10章) 245
B.10 Proxy (代理) 模式 (第11章) 248
B.11 Chain of Responsibility (責任鏈) 模式 (第12章) 249
B.12 Flyweight (享元) 模式 (第13章) 252
B.13 構造型模式介紹 (第14章) 254
B.14 Builder (生成器) 模式 (第15章) 255
B.15 Factory Method (工廠方法) 模式(第16章) 257
B.16 Abstract Factory (抽象工廠) 模式 (第17章) 260
B.17 Prototype (原型) 模式 (第18章) 262
B.18 Memento (備忘錄) 模式 (第19章) 264
B.19 操作模式介紹 (第20章) 266
B.20 Template Method (模闆方法) 模式 (第21章) 267
B.21 State (狀態) 模式 (第22章) 268
B.22 Strategy (策略) 模式 (第23章) 270
B.23 Command (命令) 模式 (第24章) 271
B.24 Interpreter (解釋器) 模式 (第25章) 274
B.25 擴展型模式介紹 (第26章) 275
B.26 Decorator (裝飾器) 模式 (第27章) 276
B.27 Iterator (迭代器) 模式 (第28章) 278
B.28 Visitor (訪問者) 模式 (第29章) 279
附錄C Oozinoz源代碼 282
C.1 獲取和使用源代碼 282
C.2 構建Oozinoz源代碼 282
C.3 使用JUnit測試代碼 282
C.4 自己查找文件 283
C.5 小結 283
附錄D UML概覽 284
D.1 類 284
D.2 類間關係 285
D.3 接口 286
D.4 對象 287
D.5 狀態 288
詞匯錶 289
參考文獻 294
索引 296
設計模式列錶 308
· · · · · · (
收起)