本書系統(tǒng)地介紹了軟件設計模式的基礎知識和23種GoF設計模式,結構合理,共分7章,依次包括設計模式概述、UML類圖及類間關系、面向對象的七大設計原則、5種創(chuàng)建型設計模式、7種結構型設計模式、11種行為型設計模式和設計模式綜合訓練。本書邏輯性極強,對每種設計模式進行了系統(tǒng)的介紹,依次包括模式動機、模式結構與角色分析、模式實例解析和模式效果分析。配套的課程網站包括了課程學習指導、上機實驗指導、課件和課程檔案文件下載等,配套的數字資源可方便學生自主學習。
張凱,武漢科技大學計算機學院教授,主要從事多目標進化算法、DNA分子計算、虛擬現(xiàn)實技術等領域的研究。
第1章 軟件設計模式的概述 1
1.1 軟件設計模式及其發(fā)展簡史 1
1.1.1 模式與軟件設計模式 1
1.1.2 軟件設計模式的產生與發(fā)展 1
1.1.3 軟件設計模式的基本特點 2
1.2 軟件設計模式的定義、基本要素及研究意義 6
1.2.1 軟件設計模式的定義 6
1.2.2 基本要素 6
1.2.3 研究意義 7
1.3 GoF設計模式及其分類 7
1.3.1 GoF設計模式 7
1.3.2 創(chuàng)建型設計模式、結構型設計模式和行為型設計模式 8
1.3.3 類模式與對象模式 8
1.3.4 進一步分類 8
1.4 軟件設計模式的相關課程 9
1.4.1 軟件體系結構 9
1.4.2 軟件工程 9
1.4.3 Java方向的系列課程 9
習題 11
第2章 UML類圖及類間關系 13
2.1 UML概述 13
2.1.1 UML定義及發(fā)展簡史 13
2.1.2 UML建模技術的應用 14
2.2 UML類圖 15
2.2.1 使用UML表示類 15
2.2.2 UML類圖繪制軟件 15
2.2.3 AmaterasUML插件的使用 16
2.3 類間關系及其UML類圖表示 17
2.3.1 關聯(lián)關系 17
2.3.2 依賴關系 19
2.3.3 泛化關系 19
2.3.4 實現(xiàn)關系 20
習題 21
實驗 22
第3章 面向對象設計原則 23
3.1 面向對象設計原則的概述 23
3.2 開閉原則 24
3.3 里氏代換原則 24
3.4 依賴倒置原則 25
3.5 合成-聚合復用原則 25
3.6 單一職責原則 27
3.7 迪米特法則 28
3.8 接口隔離原則 29
習題 30
實驗 32
第4章 創(chuàng)建型設計模式 33
4.1 工廠模式 33
4.1.1 預備知識:XML解析與使用Java反射創(chuàng)建對象 33
4.1.2 簡單工廠模式 38
4.1.3 工廠方法模式 41
4.1.4 抽象工廠模式 44
4.2 單例模式及其擴展 49
4.2.1 單例模式 49
4.2.2 懶漢式單例類、餓漢式單例類與線程安全 52
4.3 原型模式及其擴展 54
4.3.1 原型模式 54
4.3.2 淺克隆與深克隆 58
4.4 建造者模式及其擴展 64
4.4.1 建造者模式 64
4.4.2 使用鉤子方法控制產品的建造過程 67
4.4.3 在抽象建造者中組合產品 69
習題 72
實驗 74
第5章 結構型設計模式 76
5.1 外觀模式及應用 76
5.1.1 外觀模式 76
5.1.2 使用抽象外觀類可更好地滿足開閉原則 79
5.2 適配器模式 82
5.2.1 類適配器模式 83
5.2.2 對象適配器模式 84
5.2.3 雙向適配器模式 85
5.3 組合模式 87
5.4 代理模式及應用 93
5.4.1 代理模式 93
5.4.2 靜態(tài)代理與動態(tài)代理 96
5.4.3 JDK動態(tài)代理及應用 96
5.4.4 CGLib動態(tài)代理 100
5.4.5 遠程代理、RMI與RPC 102
5.5 橋接模式 109
5.6 裝飾模式 112
5.7 享元模式及應用 119
5.7.1 享元模式 119
5.7.2 享元模式在JDK開發(fā)中的應用 125
習題 126
實驗 129
第6章 行為型設計模式 132
6.1 策略模式 132
6.2 模板方法模式及應用 135
6.2.1 模板方法模式 135
6.2.2 模板方法模式在Servlet組件開發(fā)中的應用 138
6.3 備忘錄模式 141
6.4 觀察者模式及應用 146
6.4.1 觀察者模式 146
6.4.2 觀察者模式的應用 152
6.5 迭代器模式及應用 153
6.5.1 迭代器模式 153
6.5.2 迭代器模式在JDK集合框架中的應用 156
6.6 命令模式及其應用 157
6.6.1 命令模式 157
6.6.2 智能家居遙控器 160
6.6.3 日志功能與命令的撤銷和恢復功能 163
6.6.4 使用棧實現(xiàn)多次撤銷與恢復 165
6.6.5 聯(lián)用命令模式和組合模式實現(xiàn)宏命令 168
6.7 狀態(tài)模式及應用 171
6.7.1 狀態(tài)模式 171
6.7.2 狀態(tài)模式與策略模式應用的比較 175
6.8 職責鏈模式及其擴展 180
6.8.1 職責鏈模式 180
6.8.2 純的職責鏈模式和不純的職責鏈模式 185
6.8.3 與狀態(tài)模式比較 185
6.9 中介者模式 185
6.10 訪問者模式 188
6.11 解釋器模式及應用 193
6.11.1 基礎知識:詞法分析、語法分析與抽象語法樹 193
6.11.2 解釋器模式 195
6.11.3 模式的應用 199
習題 211
實驗 215
第7章 設計模式綜合應用 219
7.1 需求分析 219
7.2 總體設計 219
7.2.1 總體設計流程圖 219
7.2.2 模塊設計 219
7.2.3 界面設計 220
7.3 功能設計及其設計模式分析 222
7.3.1 使用簡單工廠模式和單例模式管理繪圖工具 222
7.3.2 使用模板方法管理工具面板和顏色面板 223
7.3.3 使用狀態(tài)模式管理系統(tǒng)菜單 226
7.3.4 使用迭代器模式存取圖片文件 227
7.3.5 使用備忘錄模式管理編輯操作 230
習題 232
實驗 234
參考文獻 236