黨的二十大報告指出: 教育、科技、人才是全面建設(shè)社會主義現(xiàn)代化國家的基礎(chǔ)性、戰(zhàn)略性支撐。必須堅持科技是第一生產(chǎn)力、人才是第一資源、創(chuàng)新是第一動力,深入實施科教興國戰(zhàn)略、人才強國戰(zhàn)略、創(chuàng)新驅(qū)動發(fā)展戰(zhàn)略,開辟發(fā)展新領(lǐng)域新賽道,不斷塑造發(fā)展新動能新優(yōu)勢。高等教育與經(jīng)濟社會發(fā)展緊密相連,對促進就業(yè)創(chuàng)業(yè)、助力經(jīng)濟社會發(fā)展、增進人民福祉具有重要意義。
設(shè)計模式和敏捷開發(fā)方法的創(chuàng)始人之一Erich Gamma曾說過: 設(shè)計和開發(fā)面向?qū)ο筌浖欠浅@щy的,而設(shè)計和開發(fā)可復(fù)用的面向?qū)ο筌浖⻊t更加困難。正因為如此,在軟件開發(fā)過程中,有經(jīng)驗的設(shè)計者往往會重復(fù)使用一些他們在以前的設(shè)計工作中曾經(jīng)用到的成功而又有效的解決方案,這些解決方案可以提高開發(fā)人員的開發(fā)效率與軟件質(zhì)量,并使得所設(shè)計的軟件更加靈活,易于擴展,可復(fù)用性也更高。這些解決方案就是設(shè)計模式。設(shè)計模式為實現(xiàn)可維護性復(fù)用而誕生,無論是面向?qū)ο缶幊痰某鯇W(xué)者還是有一定編程經(jīng)驗的程序員,都可以從設(shè)計模式的學(xué)習(xí)和使用中深入理解面向?qū)ο笏枷氲木A,開發(fā)出可擴展性和可復(fù)用性俱佳的軟件。
設(shè)計模式是前人經(jīng)驗的積累,它讓軟件變得更像一件藝術(shù)品,而不是一堆難以維護和重用的代碼,它已經(jīng)成功應(yīng)用于眾多軟件設(shè)計中,是一個優(yōu)秀的面向?qū)ο筌浖_發(fā)人員所必須掌握的知識和技能。本書編者在十多年的軟件開發(fā)和計算機教育教學(xué)工作中積累了豐富的設(shè)計模式使用經(jīng)驗和教學(xué)經(jīng)驗,也深刻體會到學(xué)習(xí)設(shè)計模式的重要性。目前,國內(nèi)外越來越多的高校在計算機及軟件工程相關(guān)專業(yè)的教學(xué)中開設(shè)了軟件體系結(jié)構(gòu)面向?qū)ο蠓治雠c設(shè)計等課程,而設(shè)計模式是這些課程的核心組成部分,還有的學(xué)校將設(shè)計模式作為一門單獨的課程來開設(shè)。此外,很多軟件培訓(xùn)機構(gòu)在軟件工程師培訓(xùn)課程中也包含了設(shè)計模式相關(guān)內(nèi)容,在各類計算機考試和企業(yè)招聘筆試中設(shè)計模式相關(guān)考題也占據(jù)了一定的比例。編者在過去幾年中已完成多種設(shè)計模式教材的編寫工作,本書融合了之前幾種教材的優(yōu)點,力求為廣大師生提供一本內(nèi)容全面、實用性強、通俗易懂的設(shè)計模式教材。
本書的編寫目的在于通過大量應(yīng)用實例和習(xí)題,理論聯(lián)系實際,使讀者更快、更好地理解和掌握每個設(shè)計模式。全書共26章,可分為四部分:
第一部分包含第1章和第2章,主要介紹與設(shè)計模式相關(guān)的一些基礎(chǔ)知識,包括設(shè)計模式概述、7個常用的面向?qū)ο笤O(shè)計原則等內(nèi)容,為后續(xù)設(shè)計模式的學(xué)習(xí)奠定基礎(chǔ);
第二部分包含第3~8章,介紹6種常用的創(chuàng)建型設(shè)計模式,分別是簡單工廠模式、工廠方法模式、抽象工廠模式、建造者模式、原型模式和單例模式;
第三部分包含第9~15章,介紹7種常用的結(jié)構(gòu)型設(shè)計模式,分別是適配器模式、橋接模式、組合模式、裝飾模式、外觀模式、享元模式和代理模式;
第四部分包含第16~26章,介紹11種常用的行為型設(shè)計模式,分別是職責(zé)鏈模式、命令模式、解釋器模式、迭代器模式、中介者模式、備忘錄模式、觀察者模式、狀態(tài)模式、策略模式、模板方法模式和訪問者模式。
本書結(jié)合大量項目應(yīng)用實例對每個設(shè)計模式進行了細(xì)致的講解。全書結(jié)構(gòu)合理、條理清晰、內(nèi)容豐富、講解深入,且在每章后面都配有大量的習(xí)題,很多習(xí)題也都基于項目實例,讓讀者在學(xué)完相關(guān)知識后能夠更好地消化和鞏固所學(xué)知識。此外,在附錄中還提供了UML類圖相關(guān)知識的介紹。
在本書的編寫過程中參考了大量已有的設(shè)計模式書籍,集各家之所長,并進行了適當(dāng)?shù)恼砗蛿U展,將一些原本深奧并難以理解的設(shè)計思想通過簡單的應(yīng)用實例來解析,讓讀者能夠輕松掌握面向?qū)ο笤O(shè)計思想的精髓。本書以實例驅(qū)動教學(xué)為整體編寫原則,每個模式的學(xué)習(xí)都基于至少一個應(yīng)用實例,結(jié)合應(yīng)用實例分析和講解每個設(shè)計模式,力求通過最通俗易懂的方式讓讀者學(xué)習(xí)和理解設(shè)計模式,讓讀者在真實項目實例的引導(dǎo)下學(xué)會選擇和合理運用設(shè)計模式。在設(shè)計模式講解部分,每章的基本結(jié)構(gòu)如下:
為便于教學(xué),本書提供豐富的配套資源,包括教學(xué)大綱、教學(xué)課件、電子教案、教學(xué)進度表、在線作業(yè)、習(xí)題答案和600分鐘的微課視頻。此外,本書還提供完整的設(shè)計模式及應(yīng)用實例的UML結(jié)構(gòu)圖(類圖)和Java實現(xiàn)代碼,所有類圖均嚴(yán)格按照UML 2.X標(biāo)準(zhǔn)繪制,所有代碼均在Eclipse Neon v4.6.0中通過測試且運行無誤。
資源下載提示
課件等資源: 掃描封底的圖書資源二維碼,在公眾號書圈下載。
素材(源碼)等資源: 掃描目錄上方的二維碼下載。
在線自測題: 掃描封底的作業(yè)系統(tǒng)二維碼,再掃描自測題二維碼在線做題。
微課視頻: 掃描封底的文泉云盤防盜碼,再掃描書中相應(yīng)章節(jié)的視頻講解二維碼,可以在線學(xué)習(xí)。
本書既可作為高等院校計算機及軟件相關(guān)專業(yè)軟件設(shè)計模式軟件體系結(jié)構(gòu)面向?qū)ο蠓治雠c設(shè)計等課程教材,也可作為各軟件培訓(xùn)機構(gòu)培訓(xùn)教材及全國計算機技術(shù)與軟件專業(yè)技術(shù)資格(水平)考試輔導(dǎo)教材,還可作為軟件架構(gòu)師、軟件工程師及廣大軟件愛好者的自學(xué)讀物和參考用書。
由于時間倉促,加之編者學(xué)識有限,雖經(jīng)多次審閱與校稿,但書中不足和疏漏之處在所難免,懇請廣大讀者批評、指正,力求使本書精益求精,更趨完美。
編者
2024年8月
第一部分設(shè)計模式基礎(chǔ)
第1章設(shè)計模式概述
1.1設(shè)計模式的誕生與發(fā)展
1.1.1模式的誕生與定義
1.1.2軟件模式概述
1.1.3設(shè)計模式的發(fā)展
1.2設(shè)計模式的定義與分類
1.2.1設(shè)計模式的定義
1.2.2設(shè)計模式的基本要素
1.2.3設(shè)計模式的分類
1.3GoF設(shè)計模式簡介
1.4設(shè)計模式的優(yōu)點
1.5本章小結(jié)
1.6習(xí)題
第2章面向?qū)ο笤O(shè)計原則
2.1面向?qū)ο笤O(shè)計原則概述
2.2單一職責(zé)原則
2.3開閉原則
2.4里氏代換原則
2.5依賴倒轉(zhuǎn)原則
2.6接口隔離原則
2.7合成復(fù)用原則
2.8迪米特法則
2.9本章小結(jié)
2.10習(xí)題
第二部分創(chuàng)建型設(shè)計模式
第3章簡單工廠模式
3.1創(chuàng)建型模式
3.2簡單工廠模式概述
3.3簡單工廠模式結(jié)構(gòu)與實現(xiàn)
3.3.1簡單工廠模式結(jié)構(gòu)
3.3.2簡單工廠模式實現(xiàn)
3.4簡單工廠模式應(yīng)用實例
3.5關(guān)于創(chuàng)建對象與使用對象
3.6簡單工廠模式的簡化
3.7簡單工廠模式優(yōu)缺點與適用環(huán)境
3.7.1簡單工廠模式優(yōu)點
3.7.2簡單工廠模式缺點
3.7.3簡單工廠模式適用環(huán)境
3.8本章小結(jié)
3.9習(xí)題
第4章工廠方法模式
4.1工廠方法模式概述
4.2工廠方法模式結(jié)構(gòu)與實現(xiàn)
4.2.1工廠方法模式結(jié)構(gòu)
4.2.2工廠方法模式實現(xiàn)
4.3工廠方法模式應(yīng)用實例
4.4反射機制與配置文件
4.5工廠方法的重載
4.6工廠方法的隱藏
4.7工廠方法模式優(yōu)缺點與適用環(huán)境
4.7.1工廠方法模式優(yōu)點
4.7.2工廠方法模式缺點
4.7.3工廠方法模式適用環(huán)境
4.8本章小結(jié)
4.9習(xí)題
第5章抽象工廠模式
5.1產(chǎn)品等級結(jié)構(gòu)與產(chǎn)品族
5.2抽象工廠模式概述
5.3抽象工廠模式結(jié)構(gòu)與實現(xiàn)
5.3.1抽象工廠模式結(jié)構(gòu)
5.3.2抽象工廠模式實現(xiàn)
5.4抽象工廠模式應(yīng)用實例
5.5開閉原則的傾斜性
5.6抽象工廠模式優(yōu)缺點與適用環(huán)境
5.6.1抽象工廠模式優(yōu)點
5.6.2抽象工廠模式缺點
5.6.3抽象工廠模式適用環(huán)境
5.7本章小結(jié)
5.8習(xí)題
第6章建造者模式
6.1建造者模式概述
6.2建造者模式結(jié)構(gòu)與實現(xiàn)
6.2.1建造者模式結(jié)構(gòu)
6.2.2建造者模式實現(xiàn)
6.3建造者模式應(yīng)用實例
6.4指揮者類的深入討論
6.5建造者模式優(yōu)缺點與適用環(huán)境
6.5.1建造者模式優(yōu)點
6.5.2建造者模式缺點
6.5.3建造者模式適用環(huán)境
6.6本章小結(jié)
6.7習(xí)題
第7章原型模式
7.1原型模式概述
7.2原型模式結(jié)構(gòu)與實現(xiàn)
7.2.1原型模式結(jié)構(gòu)
7.2.2淺克隆與深克隆
7.2.3原型模式實現(xiàn)
7.3原型模式應(yīng)用實例
7.4原型管理器
7.5原型模式優(yōu)缺點與適用環(huán)境
7.5.1原型模式優(yōu)點
7.5.2原型模式缺點
7.5.3原型模式適用環(huán)境
7.6本章小結(jié)
7.7習(xí)題
第8章單例模式
8.1單例模式概述
8.2單例模式結(jié)構(gòu)與實現(xiàn)
8.2.1單例模式結(jié)構(gòu)
8.2.2單例模式實現(xiàn)
8.3單例模式應(yīng)用實例
8.4餓漢式單例與懶漢式單例
8.5使用靜態(tài)內(nèi)部類和枚舉實現(xiàn)單例模式
8.6單例模式優(yōu)缺點與適用環(huán)境
8.6.1單例模式優(yōu)點
8.6.2單例模式缺點
8.6.3單例模式適用環(huán)境
8.7本章小結(jié)
8.8習(xí)題
第三部分結(jié)構(gòu)型設(shè)計模式
第9章適配器模式
9.1結(jié)構(gòu)型模式
9.2適配器模式概述
9.3適配器模式結(jié)構(gòu)與實現(xiàn)
9.3.1適配器模式結(jié)構(gòu)
9.3.2適配器模式實現(xiàn)
9.4適配器模式應(yīng)用實例
9.5缺省適配器模式
9.6雙向適配器
9.7適配器模式優(yōu)缺點與適用環(huán)境
9.7.1適配器模式優(yōu)點
9.7.2適配器模式缺點
9.7.3適配器模式適用環(huán)境
9.8本章小結(jié)
9.9習(xí)題
第10章橋接模式
10.1橋接模式概述
10.2橋接模式結(jié)構(gòu)與實現(xiàn)
10.2.1橋接模式結(jié)構(gòu)
10.2.2橋接模式實現(xiàn)
10.3橋接模式應(yīng)用實例
10.4橋接模式與適配器模式的聯(lián)用
10.5橋接模式優(yōu)缺點與適用環(huán)境
10.5.1橋接模式優(yōu)點
10.5.2橋接模式缺點
10.5.3橋接模式適用環(huán)境
10.6本章小結(jié)
10.7習(xí)題
第11章組合模式
11.1組合模式概述
11.2組合模式結(jié)構(gòu)與實現(xiàn)
11.2.1組合模式結(jié)構(gòu)
11.2.2組合模式實現(xiàn)
11.3組合模式應(yīng)用實例
11.4透明組合模式與安全組合模式
11.5組合模式優(yōu)缺點與適用環(huán)境
11.5.1組合模式優(yōu)點
11.5.2組合模式缺點
11.5.3組合模式適用環(huán)境
11.6本章小結(jié)
11.7習(xí)題
第12章裝飾模式
12.1裝飾模式概述
12.2裝飾模式結(jié)構(gòu)與實現(xiàn)
12.2.1裝飾模式結(jié)構(gòu)
12.2.2裝飾模式實現(xiàn)
12.3裝飾模式應(yīng)用實例
12.4透明裝飾模式與半透明裝飾模式
12.5裝飾模式優(yōu)缺點與適用環(huán)境
12.5.1裝飾模式優(yōu)點
12.5.2裝飾模式缺點
12.5.3裝飾模式適用環(huán)境
12.6本章小結(jié)
12.7習(xí)題
第13章外觀模式
13.1外觀模式概述
13.2外觀模式結(jié)構(gòu)與實現(xiàn)
13.2.1外觀模式結(jié)構(gòu)
13.2.2外觀模式實現(xiàn)
13.3外觀模式應(yīng)用實例
13.4抽象外觀類
13.5外觀模式優(yōu)缺點與適用環(huán)境
13.5.1外觀模式優(yōu)點
13.5.2外觀模式缺點
13.5.3外觀模式適用環(huán)境
13.6本章小結(jié)
13.7習(xí)題
第14章享元模式
14.1享元模式概述
14.2享元模式結(jié)構(gòu)與實現(xiàn)
14.2.1享元模式結(jié)構(gòu)
14.2.2享元模式實現(xiàn)
14.3享元模式應(yīng)用實例
14.4有外部狀態(tài)的享元模式
14.5單純享元模式與復(fù)合享元模式
14.6享元模式與String類
14.7享元模式優(yōu)缺點與適用環(huán)境
14.7.1享元模式優(yōu)點
14.7.2享元模式缺點
14.7.3享元模式適用環(huán)境
14.8本章小結(jié)
14.9習(xí)題
第15章代理模式
15.1代理模式概述
15.2代理模式結(jié)構(gòu)與實現(xiàn)
15.2.1代理模式結(jié)構(gòu)
15.2.2代理模式實現(xiàn)
15.3代理模式應(yīng)用實例
15.4遠(yuǎn)程代理
15.5虛擬代理
15.6動態(tài)代理
15.7代理模式優(yōu)缺點與適用環(huán)境
15.7.1代理模式優(yōu)點
15.7.2代理模式缺點
15.7.3代理模式適用環(huán)境
15.8本章小結(jié)
15.9習(xí)題
第四部分行為型設(shè)計模式
第16章職責(zé)鏈模式
16.1行為型模式
16.2職責(zé)鏈模式概述
16.3職責(zé)鏈模式結(jié)構(gòu)與實現(xiàn)
16.3.1職責(zé)鏈模式結(jié)構(gòu)
16.3.2職責(zé)鏈模式實現(xiàn)
16.4職責(zé)鏈模式應(yīng)用實例
16.5純與不純的職責(zé)鏈模式
16.6職責(zé)鏈模式優(yōu)缺點與適用環(huán)境
16.6.1職責(zé)鏈模式優(yōu)點
16.6.2職責(zé)鏈模式缺點
16.6.3職責(zé)鏈模式適用環(huán)境
16.7本章小結(jié)
16.8習(xí)題
第17章命令模式
17.1命令模式概述
17.2命令模式結(jié)構(gòu)與實現(xiàn)
17.2.1命令模式結(jié)構(gòu)
17.2.2命令模式實現(xiàn)
17.3命令模式應(yīng)用實例
17.4實現(xiàn)命令隊列
17.5記錄請求日志
17.6實現(xiàn)撤銷操作
17.7宏命令
17.8命令模式優(yōu)缺點與適用環(huán)境
17.8.1命令模式優(yōu)點
17.8.2命令模式缺點
17.8.3命令模式適用環(huán)境
17.9本章小結(jié)
17.10習(xí)題
第18章解釋器模式
18.1解釋器模式概述
18.2文法規(guī)則和抽象語法樹
18.3解釋器模式結(jié)構(gòu)與實現(xiàn)
18.3.1解釋器模式結(jié)構(gòu)
18.3.2解釋器模式實現(xiàn)
18.4解釋器模式應(yīng)用實例
18.5解釋器模式優(yōu)缺點與適用環(huán)境
18.5.1解釋器模式優(yōu)點
18.5.2解釋器模式缺點
18.5.3解釋器模式適用環(huán)境
18.6本章小結(jié)
18.7習(xí)題
第19章迭代器模式
19.1迭代器模式概述
19.2迭代器模式結(jié)構(gòu)與實現(xiàn)
19.2.1迭代器模式結(jié)構(gòu)
19.2.2迭代器模式實現(xiàn)
19.3迭代器模式應(yīng)用實例
19.4使用內(nèi)部類實現(xiàn)迭代器
19.5Java內(nèi)置迭代器
19.6迭代器模式優(yōu)缺點與適用環(huán)境
19.6.1迭代器模式優(yōu)點
19.6.2迭代器模式缺點
19.6.3迭代器模式適用環(huán)境
19.7本章小結(jié)
19.8習(xí)題
第20章中介者模式
20.1中介者模式概述
20.2中介者模式結(jié)構(gòu)與實現(xiàn)
20.2.1中介者模式結(jié)構(gòu)
20.2.2中介者模式實現(xiàn)
20.3中介者模式應(yīng)用實例
20.4擴展中介者與同事類
20.5中介者模式優(yōu)缺點與適用環(huán)境
20.5.1中介者模式優(yōu)點
20.5.2中介者模式缺點
20.5.3中介者模式適用環(huán)境
20.6本章小結(jié)
20.7習(xí)題
第21章備忘錄模式
21.1備忘錄模式概述
21.2備忘錄模式結(jié)構(gòu)與實現(xiàn)
21.2.1備忘錄模式結(jié)構(gòu)
21.2.2備忘錄模式實現(xiàn)
21.3備忘錄模式應(yīng)用實例
21.4實現(xiàn)多次撤銷
21.5備忘錄模式優(yōu)缺點與適用環(huán)境
21.5.1備忘錄模式優(yōu)點
21.5.2備忘錄模式缺點
21.5.3備忘錄模式適用環(huán)境
21.6本章小結(jié)
21.7習(xí)題
第22章觀察者模式
22.1觀察者模式概述
22.2觀察者模式結(jié)構(gòu)與實現(xiàn)
22.2.1觀察者模式結(jié)構(gòu)
22.2.2觀察者模式實現(xiàn)
22.3觀察者模式應(yīng)用實例
22.4JDK對觀察者模式的支持
22.5觀察者模式與Java事件處理
22.6觀察者模式與MVC
22.7觀察者模式優(yōu)缺點與適用環(huán)境
22.7.1觀察者模式優(yōu)點
22.7.2觀察者模式缺點
22.7.3觀察者模式適用環(huán)境
22.8本章小結(jié)
22.9習(xí)題
第23章狀態(tài)模式
23.1狀態(tài)模式概述
23.2狀態(tài)模式結(jié)構(gòu)與實現(xiàn)
23.2.1狀態(tài)模式結(jié)構(gòu)
23.2.2狀態(tài)模式實現(xiàn)
23.3狀態(tài)模式應(yīng)用實例
23.4共享狀態(tài)
23.5使用環(huán)境類實現(xiàn)狀態(tài)轉(zhuǎn)換
23.6狀態(tài)模式優(yōu)缺點與適用環(huán)境
23.6.1狀態(tài)模式優(yōu)點
23.6.2狀態(tài)模式缺點
23.6.3狀態(tài)模式適用環(huán)境
23.7本章小結(jié)
23.8習(xí)題
第24章策略模式
24.1策略模式概述
24.2策略模式結(jié)構(gòu)與實現(xiàn)
24.2.1策略模式結(jié)構(gòu)
24.2.2策略模式實現(xiàn)
24.3策略模式應(yīng)用實例
24.4Java SE中的布局管理
24.5策略模式優(yōu)缺點與適用環(huán)境
24.5.1策略模式優(yōu)點
24.5.2策略模式缺點
24.5.3策略模式適用環(huán)境
24.6本章小結(jié)
24.7習(xí)題
第25章模板方法模式
25.1模板方法模式概述
25.2模板方法模式結(jié)構(gòu)與實現(xiàn)
25.2.1模板方法模式結(jié)構(gòu)
25.2.2模板方法模式實現(xiàn)
25.3模板方法模式應(yīng)用實例
25.4鉤子方法的使用
25.5模板方法模式優(yōu)缺點與適用環(huán)境
25.5.1模板方法模式優(yōu)點
25.5.2模板方法模式缺點
25.5.3模板方法模式適用環(huán)境
25.6本章小結(jié)
25.7習(xí)題
第26章訪問者模式
26.1訪問者模式概述
26.2訪問者模式結(jié)構(gòu)與實現(xiàn)
26.2.1訪問者模式結(jié)構(gòu)
26.2.2訪問者模式實現(xiàn)
26.3訪問者模式應(yīng)用實例
26.4訪問者模式與組合模式聯(lián)用
26.5訪問者模式優(yōu)缺點與適用環(huán)境
26.5.1訪問者模式優(yōu)點
26.5.2訪問者模式缺點
26.5.3訪問者模式適用環(huán)境
26.6本章小結(jié)
26.7習(xí)題
附錄AUML類圖
A.1UML概述
A.2類與類的UML表示
A.3類之間的關(guān)系
參考文獻(xiàn)