《軟件設(shè)計(jì)原則與模式》分為兩個(gè)部分:第一部分是設(shè)計(jì)原則簡介及必要的UML知識;第二部分詳細(xì)介紹了27種設(shè)計(jì)模式,每個(gè)設(shè)計(jì)模式都有一個(gè)與之適應(yīng)的、淺顯易懂的例子作為引子,并有詳細(xì)的UML結(jié)構(gòu)設(shè)計(jì)圖及相對應(yīng)的可運(yùn)行程序以幫助讀者理解所學(xué)模式。本書的特點(diǎn)是通過有趣的例子講解每個(gè)設(shè)計(jì)模式的含義及結(jié)構(gòu),把設(shè)計(jì)模式的學(xué)習(xí)門檻降低,使初學(xué)者可以更加容易理解。每個(gè)程序都非常簡潔明了,采用Java最新成熟技術(shù)編寫,易學(xué)易用。本書適合作為本科及高職院校軟件專業(yè)的設(shè)計(jì)模式課程教材,也可供從事軟件工程的初、中級設(shè)計(jì)人員參考使用。
模式是對一種經(jīng)常發(fā)生的問題提出的一種解決方案,這種方案經(jīng)過無數(shù)人的測試和使用,經(jīng)過千錘百煉后幾乎是無懈可擊的,F(xiàn)實(shí)情況中,很多人不使用模式是因?yàn)椴涣私馄鋬?yōu)點(diǎn),認(rèn)為這些模式很復(fù)雜。其實(shí),設(shè)計(jì)模式的“復(fù)雜”就在于其要構(gòu)造一個(gè)“萬能鑰匙”,目的是提出一種對所有鎖的開鎖方案。很多程序員在接觸設(shè)計(jì)模式后,都有一種相見恨晚的感覺,有人形容學(xué)習(xí)了設(shè)計(jì)模式后感覺自己好像已經(jīng)脫胎換骨,達(dá)到了新的境界;還有人甚至把是否了解設(shè)計(jì)模式作為劃分程序員水平的標(biāo)準(zhǔn)。
本書的主要特色是簡單易懂,把設(shè)計(jì)模式的學(xué)習(xí)門檻降到最低,目的就是讓讀者一看就會。同時(shí),通過有趣的例子引入每種設(shè)計(jì)模式的含義,使初學(xué)者更容易理解和掌握27種設(shè)計(jì)模式。
本書分為兩大部分,共4章:第一部分(第1章)介紹軟件設(shè)計(jì)原則,并簡單介紹UML和設(shè)計(jì)模式;第二部分(第2~4章)詳細(xì)介紹27種設(shè)計(jì)模式,每種設(shè)計(jì)模式都有一個(gè)與之對應(yīng)的、淺顯易懂的例子作為引子,并有詳細(xì)的UML結(jié)構(gòu)設(shè)計(jì)圖和相對應(yīng)的可運(yùn)行程序。
IT行業(yè)有個(gè)說法:“沒寫過10萬行代碼,就不要說你會一門語言”。本書提供的上萬行代碼可使讀者既熟悉Java語言,又掌握用Java語言描述的27種設(shè)計(jì)模式,可謂一舉兩得。
本書由郭雙宙、敖山、黃海波和鄭哲共同編寫。在編寫過程中,參考并借鑒了一些相關(guān)書籍中的經(jīng)典案例,在此一并向作者表示感謝。
由于作者水平有限,書中不足之處在所難免,懇請廣大讀者批評指正。
編者
前 言
第1章 軟件設(shè)計(jì)原則與UML簡介
1.1 “開—閉”原則
1.2 里氏代換原則
1.3 依賴倒置原則
1.4 接口隔離原則
1.5 合成聚合復(fù)用原則
1.6 迪米特法則
1.7 單一職責(zé)原則
1.8 UML簡介
1.9 設(shè)計(jì)模式簡介
第2章 創(chuàng)建型模式
2.1 簡單工廠模式
2.1.1 工廠模式的形態(tài)
2.1.2 簡單工廠模式的結(jié)構(gòu)
2.1.3 簡單工廠模式的實(shí)現(xiàn)
2.1.4 簡單工廠模式的使用實(shí)例
2.1.5 簡單工廠模式的優(yōu)點(diǎn)與缺點(diǎn)
2.2 工廠方法模式
2.2.1 工廠方法模式的結(jié)構(gòu)
2.2.2 工廠方法模式的實(shí)現(xiàn)
2.2.3 工廠方法模式的實(shí)際應(yīng)用
2.3 抽象工廠模式
2.3.1 抽象工廠模式的結(jié)構(gòu)
2.3.2 抽象工廠模式的起源
2.3.3 抽象工廠模式的優(yōu)點(diǎn)與缺點(diǎn)
2.3.4 抽象工廠模式的實(shí)現(xiàn)
2.4 單例模式
2.4.1 單例模式的結(jié)構(gòu)
2.4.2 單例模式的類型
2.4.3 單例模式的進(jìn)階
2.5 多例模式
2.5.1 多例模式的結(jié)構(gòu)
2.5.2 多例模式的實(shí)現(xiàn)
2.6 建造模式
2.6.1 建造模式的適用場景
2.6.2 建造模式的特點(diǎn)
2.6.3 建造模式的結(jié)構(gòu)
2.7 原型模式
2.7.1 原型模式的結(jié)構(gòu)
2.7.2 原型模式的優(yōu)點(diǎn)與缺點(diǎn)
第3章 結(jié)構(gòu)型模式
3.1 適配器模式
3.1.1 適配器模式的結(jié)構(gòu)
3.1.2 適配器模式的實(shí)現(xiàn)
3.1.3 適配器模式的優(yōu)點(diǎn)與缺點(diǎn)
3.2 缺省適配器模式
3.2.1 缺省適配器模式的結(jié)構(gòu)
3.2.2 缺省適配器模式的實(shí)現(xiàn)
3.3 合成模式
3.3.1 合成模式的結(jié)構(gòu)
3.3.2 合成模式的實(shí)現(xiàn)
3.4 裝飾模式
3.4.1 裝飾模式的結(jié)構(gòu)
3.4.2 裝飾模式的實(shí)現(xiàn)
3.4.3 裝飾模式的簡化
3.4.4 裝飾模式的進(jìn)階
3.5 代理模式
3.5.1 代理模式的結(jié)構(gòu)
3.5.2 代理模式的實(shí)現(xiàn)
3.6 享元模式
3.6.1 享元模式的結(jié)構(gòu)
3.6.2 享元模式的優(yōu)點(diǎn)與缺點(diǎn)
3.7 門面模式
3.7.1 門面模式的結(jié)構(gòu)
3.7.2 門面模式的實(shí)現(xiàn)
3.7.3 門面模式的進(jìn)階
3.8 橋梁模式
3.8.1 橋梁模式的定義
3.8.2 橋梁模式的結(jié)構(gòu)
3.8.3 橋梁模式的優(yōu)點(diǎn)
3.8.4 橋梁模式的實(shí)現(xiàn)
第4章 行為型模式
4.1 不變模式
4.1.1 “不變” 和 “只讀” 的區(qū)別
4.1.2 不變模式的結(jié)構(gòu)
4.1.3 不變模式在Java中的應(yīng)用
4.1.4 不變模式的安全應(yīng)用
4.1.5 不變模式的優(yōu)點(diǎn)與缺點(diǎn)
4.2 策略模式
4.2.1 策略模式的結(jié)構(gòu)
4.2.2 策略模式的特點(diǎn)
4.2.3 策略模式的實(shí)現(xiàn)
4.2.4 策略模式的優(yōu)點(diǎn)與缺點(diǎn)
4.3 模板方法模式
4.3.1 模板方法模式的結(jié)構(gòu)
4.3.2 模板方法模式中的方法
4.3.3 模板方法模式的實(shí)現(xiàn)
4.3.4 模板方法模式的進(jìn)階
4.4 觀察者模式
4.4.1 觀察者模式的結(jié)構(gòu)
4.4.2 觀察者模式的模型
4.4.3 觀察者模式的實(shí)現(xiàn)
4.4.4 推模型和拉模型的比較
4.5 迭代子模式
4.5.1 迭代子模式的結(jié)構(gòu)
4.5.2 寬接口和窄接口
4.5.3 迭代子模式的實(shí)現(xiàn)
4.5.4 迭代子模式的優(yōu)點(diǎn)與缺點(diǎn)
4.6 責(zé)任鏈模式
4.6.1 責(zé)任鏈模式的結(jié)構(gòu)
4.6.2 責(zé)任鏈模式的實(shí)現(xiàn)
4.7 命令模式
4.7.1 命令模式的結(jié)構(gòu)
4.7.2 命令模式的實(shí)現(xiàn)
4.7.3 命令模式的解析
4.7.4 命令模式的優(yōu)點(diǎn)
4.8 備忘錄模式
4.8.1 備忘錄模式的結(jié)構(gòu)
4.8.2 備忘錄模式的實(shí)現(xiàn)
4.8.3 多重檢查點(diǎn)
4.8.4 “自述歷史”模式
4.9 狀態(tài)模式
4.9.1 狀態(tài)模式的結(jié)構(gòu)
4.9.2 狀態(tài)模式的實(shí)現(xiàn)
4.9.3 狀態(tài)模式的解析
4.10 專題:分派
4.10.1 分派的概念
4.10.2 靜態(tài)分派和動(dòng)態(tài)分派
4.10.3 單分派和多分派
4.11 訪問者模式
4.11.1 訪問者模式的結(jié)構(gòu)
4.11.2 訪問者模式的實(shí)現(xiàn)
4.11.3 訪問者模式的分析
4.11.4 訪問者模式的進(jìn)階
4.11.5 訪問者模式的優(yōu)點(diǎn)與缺點(diǎn)
4.12 解釋器模式
4.12.1 解釋器模式的結(jié)構(gòu)
4.12.2 解釋器模式的實(shí)現(xiàn)
4.13 調(diào)停者模式
4.13.1 為什么需要調(diào)停者
4.13.2 調(diào)停者模式的結(jié)構(gòu)
4.13.3 調(diào)停者模式的實(shí)現(xiàn)
4.13.4 調(diào)停者模式的優(yōu)點(diǎn)與缺點(diǎn)
參考文獻(xiàn)