本書系統(tǒng)地介紹了軟件設(shè)計模式的基礎(chǔ)知識和23種GoF設(shè)計模式,結(jié)構(gòu)合理,共分7章,依次包括設(shè)計模式概述、UML類圖及類間關(guān)系、面向?qū)ο蟮钠叽笤O(shè)計原則、5種創(chuàng)建型設(shè)計模式、7種結(jié)構(gòu)型設(shè)計模式、11種行為型設(shè)計模式和設(shè)計模式綜合訓(xùn)練。本書邏輯性極強,對每種設(shè)計模式進行了系統(tǒng)的介紹,依次包括模式動機、模式結(jié)構(gòu)與角色分析、模式實例解析和模式效果分析。配套的課程網(wǎng)站包括了課程學(xué)習(xí)指導(dǎo)、上機實驗指導(dǎo)、課件和課程檔案文件下載等,配套的數(shù)字資源可方便學(xué)生自主學(xué)習(xí)。
張凱,武漢科技大學(xué)計算機學(xué)院教授,主要從事多目標(biāo)進化算法、DNA分子計算、虛擬現(xiàn)實技術(shù)等領(lǐng)域的研究。
第1章 軟件設(shè)計模式的概述 1
1.1 軟件設(shè)計模式及其發(fā)展簡史 1
1.1.1 模式與軟件設(shè)計模式 1
1.1.2 軟件設(shè)計模式的產(chǎn)生與發(fā)展 1
1.1.3 軟件設(shè)計模式的基本特點 2
1.2 軟件設(shè)計模式的定義、基本要素及研究意義 6
1.2.1 軟件設(shè)計模式的定義 6
1.2.2 基本要素 6
1.2.3 研究意義 7
1.3 GoF設(shè)計模式及其分類 7
1.3.1 GoF設(shè)計模式 7
1.3.2 創(chuàng)建型設(shè)計模式、結(jié)構(gòu)型設(shè)計模式和行為型設(shè)計模式 8
1.3.3 類模式與對象模式 8
1.3.4 進一步分類 8
1.4 軟件設(shè)計模式的相關(guān)課程 9
1.4.1 軟件體系結(jié)構(gòu) 9
1.4.2 軟件工程 9
1.4.3 Java方向的系列課程 9
習(xí)題 11
第2章 UML類圖及類間關(guān)系 13
2.1 UML概述 13
2.1.1 UML定義及發(fā)展簡史 13
2.1.2 UML建模技術(shù)的應(yīng)用 14
2.2 UML類圖 15
2.2.1 使用UML表示類 15
2.2.2 UML類圖繪制軟件 15
2.2.3 AmaterasUML插件的使用 16
2.3 類間關(guān)系及其UML類圖表示 17
2.3.1 關(guān)聯(lián)關(guān)系 17
2.3.2 依賴關(guān)系 19
2.3.3 泛化關(guān)系 19
2.3.4 實現(xiàn)關(guān)系 20
習(xí)題 21
實驗 22
第3章 面向?qū)ο笤O(shè)計原則 23
3.1 面向?qū)ο笤O(shè)計原則的概述 23
3.2 開閉原則 24
3.3 里氏代換原則 24
3.4 依賴倒置原則 25
3.5 合成-聚合復(fù)用原則 25
3.6 單一職責(zé)原則 27
3.7 迪米特法則 28
3.8 接口隔離原則 29
習(xí)題 30
實驗 32
第4章 創(chuàng)建型設(shè)計模式 33
4.1 工廠模式 33
4.1.1 預(yù)備知識: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 使用鉤子方法控制產(chǎn)品的建造過程 67
4.4.3 在抽象建造者中組合產(chǎn)品 69
習(xí)題 72
實驗 74
第5章 結(jié)構(gòu)型設(shè)計模式 76
5.1 外觀模式及應(yīng)用 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 代理模式及應(yīng)用 93
5.4.1 代理模式 93
5.4.2 靜態(tài)代理與動態(tài)代理 96
5.4.3 JDK動態(tài)代理及應(yīng)用 96
5.4.4 CGLib動態(tài)代理 100
5.4.5 遠(yuǎn)程代理、RMI與RPC 102
5.5 橋接模式 109
5.6 裝飾模式 112
5.7 享元模式及應(yīng)用 119
5.7.1 享元模式 119
5.7.2 享元模式在JDK開發(fā)中的應(yīng)用 125
習(xí)題 126
實驗 129
第6章 行為型設(shè)計模式 132
6.1 策略模式 132
6.2 模板方法模式及應(yīng)用 135
6.2.1 模板方法模式 135
6.2.2 模板方法模式在Servlet組件開發(fā)中的應(yīng)用 138
6.3 備忘錄模式 141
6.4 觀察者模式及應(yīng)用 146
6.4.1 觀察者模式 146
6.4.2 觀察者模式的應(yīng)用 152
6.5 迭代器模式及應(yīng)用 153
6.5.1 迭代器模式 153
6.5.2 迭代器模式在JDK集合框架中的應(yīng)用 156
6.6 命令模式及其應(yīng)用 157
6.6.1 命令模式 157
6.6.2 智能家居遙控器 160
6.6.3 日志功能與命令的撤銷和恢復(fù)功能 163
6.6.4 使用棧實現(xiàn)多次撤銷與恢復(fù) 165
6.6.5 聯(lián)用命令模式和組合模式實現(xiàn)宏命令 168
6.7 狀態(tài)模式及應(yīng)用 171
6.7.1 狀態(tài)模式 171
6.7.2 狀態(tài)模式與策略模式應(yīng)用的比較 175
6.8 職責(zé)鏈模式及其擴展 180
6.8.1 職責(zé)鏈模式 180
6.8.2 純的職責(zé)鏈模式和不純的職責(zé)鏈模式 185
6.8.3 與狀態(tài)模式比較 185
6.9 中介者模式 185
6.10 訪問者模式 188
6.11 解釋器模式及應(yīng)用 193
6.11.1 基礎(chǔ)知識:詞法分析、語法分析與抽象語法樹 193
6.11.2 解釋器模式 195
6.11.3 模式的應(yīng)用 199
習(xí)題 211
實驗 215
第7章 設(shè)計模式綜合應(yīng)用 219
7.1 需求分析 219
7.2 總體設(shè)計 219
7.2.1 總體設(shè)計流程圖 219
7.2.2 模塊設(shè)計 219
7.2.3 界面設(shè)計 220
7.3 功能設(shè)計及其設(shè)計模式分析 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
習(xí)題 232
實驗 234
參考文獻(xiàn) 236