第1章基本概念
1.1什麽是設計模式2?
1.2設計模式3的作用
1.3抓取模式4的分類
設計模式4的1.4分類
1.5模式的學習階段6
第2章責任設計對象-把握9
2.1信息專家11
2.2創建者13
2.3低耦合(低耦合)14
2.4高內聚(high cohesion) 15
2.5控制器17
2.6多態性(多態性)18
2.7PureFabrication(純虛構)19
2.8間接(間接)20
2.9受保護的變體(受保護的變體)21
第3章GoF-creationdesignpatterns創意設計模式23
3.1工廠方法模式24
3.1.1定義24
3.1.2現實例子-國旗廠26
3.1.3C#示例1-電子支付系統26
3.1.4C#例2-學校登錄系統29
3.1.5Java示例-手機簡單工廠32
3.1.6優缺點34
3.1.7應用場景34
3.2FactoryMethodPattern(工廠方法模式)35
3.2.1定義35
3.2.2真實例子-阿森納36
3.2.3C#示例-多文檔系統37
3.2.4Java示例-擴展手機工廠41
3.2.5優點和缺點44
3.2.6應用場景
3.3抽象工廠模式(抽象工廠)45
3.3.1定義45
3.3.2現實生活中的例子——擴充的兵工廠48
3.3.3C#示例-大陸生態系統49
3.3.4Java實例-計算機產品52
3.3.5優點和缺點57
3.3.6應用場景
3.4構建器模式(構建器模式)58
3.4.1定義58
3.4.2真實例子-快餐店60
3.4.3C#示例-車間汽車制造61
3.4.4Java示例-建造房屋65
3.4.5優點和缺點69
3.4.6應用場景
3.5協議類型模式70
3.5.1定義70
3.5.2在現實中復制粘貼71
3.5.3C#示例-顏色管理器72
3.5.4Java示例-簡單工具欄74
淺拷貝和深拷貝76
3.5.6優點和缺點82
3.5.7應用場景
3.6單壹模式82
3.6.1定義
現在3.6.2?有什麽意義?IndowsTaskManager 83
3.6.3C#示例-負載平衡控制器84
3.6.4Java實例-系統日誌86
3 . 6 . 5雙重檢查鎖定(雙重檢查鎖定)89
3.6.6優點和缺點93
應用場景93
第4章GoF-結構化設計模式95
4.1適配器模式96
4.1.1定義96
4.1.2真實示例-電腦電源適配器97
4.1.3C#示例-化學數據庫98
4.1.4Java示例-清洗系統102
4.1.5優缺點104
4.1.6應用場景104
4.2橋接模式(橋接模式)104
4.2.1定義104
4.2.2現實中的例子——男人約會106
4.2.3C#示例-業務對象和數據對象107
4.2.4Java示例-不同系統的圖像處理112
4.2.5優缺點114
4.2.6應用場景115
4.3復合模式(組合模式)115
4.3.1定義115
4.3.2組合模式的實際應用-資源管理器117
4.3.3C#示例-圖形樹對象結構118
4.3.4Java實例-文檔格式121
4.3.5優缺點124
4.3.6應用場景125
4.4裝飾圖案(裝飾圖案)125
4.4.1定義125
4.4.2現實中的裝飾圖案-相框126
4.4.3C#示例-項目庫中的127
4.4.4Java實例-自定義JButton 131
4.4.5優缺點133
4.4.6應用場景134
4.5FacadePattern(外觀模式)134
4.5.1定義134
4.5.2現實中的例子-客服135
4.5.3C#示例-抵押申請審核136
4.5.4Java示例-泡茶139
4.5.5優缺點143
4.5.6應用場景143
4.6FlyweightPattern(輕量模式)144
4.6.1定義
4.6.2示例-郭汜中遊郭琦146
4.6.3C#實例-文檔編輯器147
4.6.4Java實例加載映像151
4.6.5優缺點154
4.6.6應用場景154
4.7代理模式(代理模式)154
定義154
4.7.2幾個實例156
4.7.3C#示例-數學代理158
4.7.4Java實例-套接字回顯160
4.7.5優缺點165
4.7.6應用場景165
第5章GoF-行為設計模式167
5.1責任鏈(責任鏈模式)168
5.1.1定義168
5.1.2現實中的例子——軍事情報的傳遞169
5.1.3C#示例-采購分類審批170
5.1.4Java示例-智能建築安防系統174
5.1.5優缺點178
5.1.6應用場景178
5.2命令模式(命令模式)179
5.2.1定義179
5.2.2現實中的例子-餐廳預訂180
5.2.3C#示例-簡單計算器181
5.2.4Java示例-主交換機185
5.2.5優缺點189
5.2.6應用場景189
5.3解釋器模式190
5.3.1定義190
5.3.2真實示例-樂譜192
5.3.3C#示例-中國資本轉換192
5.3.4Java實例-自定義程序解釋器197
5.3.5優缺點204
5.3.6應用場景205
5.4叠代器模式(叠代器模式)205
5.4.1定義205
5.4.2真實示例-電視節目選擇器206
5.4.3C#示例-遍歷示例207
5.4.4Java實例-兩個叠代器211
5.4.5優缺點213
5.4.6應用場景214
5.5中介模式(中介模式)214
定義214
5.5.2實例-機場控制塔215
5.5.3C#示例-聊天室216
5.5.4Java示例-多線程通信220
5.5.5優缺點223
應用場景223
5.6紀念品圖案(紀念品圖案)223
5.6.1定義
5.6.2真實示例-音頻均衡器226
5.6.3C#示例-銷售目標226
5.6.4Java實例-多次撤銷操作231
5.6.5優缺點236
應用場景236
5.7觀察模式236
5.7.1定義236
5.7.2現實例子——本·拉丹現身238
5.7.3C#示例-貓和老鼠238
5.7.4C#示例-股票變動241
Java示例-監控系統245
5.7.6優缺點248
應用場景248
5.8狀態模式248
5.8.1定義
5.8.2真實例子-好心情250
5.8.3C#示例-賬戶分類250
5.8.4Java示例-汽車換擋258
5.8.5優缺點261
5.8.6應用場景261
5.9戰略模式261
5.9.1定義261
5.9.2現實例子-去機場的策略263
5.9.3C#示例-排序方法263
5.9.4Java實例-多格式輸出266
5.9.5優點和缺點272
應用場景272
5.10模板方法模式(模板方法模式)272
5.1.1定義272
5.10.2現實示例-廚師烹飪274
5.10.3C#示例-數據庫連接模板274
5.10.4Java示例-冒泡排序模板277
5.10.5優缺點280
5.10.6應用場景280
5.11訪問者模式280
5.11.1定義280
5.11.2真實示例-出納出納開票282
5.11.3C#示例-人員評估283
5.11.4Java示例-維護工程師檢查車輛287
5.11.5優缺點291
5.11.6應用?291
第六章293模式的綜合應用
6.1Java實例擴展記錄器294
6.2C#示例-存儲分析器298
6.3使用模式生成程序架構316
附錄1自測題321
附錄2自測題答案331
參考文件337