前言
在過去多年的軟件開發和教學推廣工作中,我時常能夠聽到這樣的聲音:
抽象類和接口到底有什麼用?
繼承不好嗎?爲什麼有時候不用它來實現功能複用?
能不能在下次增加功能的時候不要修改源代碼?每次都改,太麻煩了。
有沒有一種方法能夠減少類的個數?這麼多類,太複雜了。
面向對象軟件的可重用性不是很好嗎?爲什麼我還是在不斷編寫相同的代碼?
我學過設計模式,也看了好幾本書,但實際開發時我還是不知道怎麼運用這些模式?
你是否也曾有過上述疑問或者類似的感慨?如果有的話,那麼本書將是你明智的選擇。本書將結合大量項目實例來逐個講解設計模式,講述如何通過設計模式來解決上述問題,讓讀者能夠快速提升自己的開發功力,真正理解和掌握每-一個設計模式,在軟件開發的內功修煉之道上邁出堅實的一步。設計模式是面向對象軟件開發的入門功夫,是前人經驗的積累,它爲構建可維護性和可複用性俱佳的軟件而誕生。
本書結構及內容
本書分爲4個部分,共26章:
第1部分:基礎知識,包含第1章和第2章,主要介紹與設計模式相關的基礎知識,包括設計模式概述,UML類圖、7個面向對象設計原則等內容,爲後續設計模式的學習奠定基礎。
第2部分:創建的藝術,包含第3~8章,介紹6種常用的創建型設計模式,分別是單例模式、簡單工廠模式、工廠方法模式、抽象工廠模式、原型模式和建造者模式。
第3部分:組合的藝術,包含第9~15章,介紹7種常用的結構性設計模式,分別是適配器模式.橋接模式、組合模式、裝飾模式.外觀模式.享元模式和代理模式。
第4部分:交互的藝術,包含第16~26章,介紹11種常用的行爲型設計模式,分別是職責鏈模式.命令模式、解釋器模式.迭代器模式、中介者模式、備忘錄模式、觀察者模式、狀態模式、策略模式、模板方法模式和訪問者模式。
想要獲取這份設計模式藝術之道,軟件開發人員內功修煉手冊的電子版文檔,添加微信即可獲取哦(msbjy2019)
每章的基本內容如下
第1部分,基礎知識
第1章:介紹設計模式的基本概念;
設計模式從何而來
設計模式是什麼-
設計模式有什麼用
個人觀點
第2章:介紹UML類圖與面向對象設計原則;
UML概述
類與類的UML圖示
類之間的關係
面向對象設計原則概述
單一職責原則
開閉原則
里氏代換原則
依賴倒轉原則
接口隔離原則
合成複用原則
迪米特法則
第二部分,創建的藝術一創建型模式
第3章:介紹如何確保系統中一個類只能有一個實例;
單例模式的動
單例模式概述
負載均衡器的設計
餓漢式單例與懶漢式單例的討論.
一種更好的單例實現方法
單例模式總結
第4章:介紹如何將對象的創建和對象的使用分離;
圖表庫的設計
簡單工廠模式概述
完整解決方案
方案的改進
創建對象與使用對象
簡單工廠模式的簡化
簡單工廠模式總結
第5章:介紹如何通過不同的工廠來創建不同類型的對象;
日誌記錄器的設計
工廠方法模式概述
完整解決方案
反射與配置文件
重載的工廠方法
工廠方法的隱藏
工廠方法模式總結
第6章:介紹如何設計一個能夠創建一系列產品對象的工廠;
界面皮膚庫的初始設計
產品等級結構與產品組
抽象工廠模式概述
完整解決方案
開閉原則的傾斜性
抽象工廠模式總結
第7章:介紹如何通過克隆來得到一個一模一樣的對象;
大同小異的工作週報
原型模式概述
完整解決方案
帶附件的週報
原型管理器的引入和實現
原型模式總結
第8章:介紹如何一步步創建一個包含多個組成部分的複雜對象
遊戲角色設計
建造者模式概述
完整解決方案
關於Director的進一步討論
建造者模式總結
第三部分,組合的藝術一結構型模式
第9章:介紹如何在不修改現有系統的前提下重用沒有源碼的第三方類庫
沒有源碼的算法庫
適配器模式概述
完整解決方案
類適配器模式
雙向適配器模式
缺省適配器模式
適配器模式總結
第10章:介紹如何避免在多層繼承結構中類的個數出現爆炸式增長
跨平臺圖像瀏覽系統.
橋接模式概述
完整解決方案
適配器模式與橋接模式的聯用
橋接模式總結
第11章:介紹如何使用面向對象的方式來處理軟件系統中的樹狀結構
設計殺毒軟件的框架結構
組合模式概述
完整解決方案
透明組合模式與安全組合模式
Sunny公司組織結構
組合模式總結
第12章:介紹如何不通過繼承的方式來擴展類的功能
圖形界面構件庫的設計
裝飾模式概述
完整解決方案
透明裝飾模式與半透明裝飾模式.
裝飾模式注意事項
裝飾模式總結
第13章:介紹如何爲複雜的系統提供一個統一的人口
文件加密模塊的設計
外觀模式概述
完整解決方案
抽象外觀類的引
外觀角色設計補充說明
外觀模式總結
第14章:介紹如何實現對象的多次複用以節省系統資源
圍棋棋子的設計
享元模式概述
完整解決方案
帶外部狀態的解決方案
單純享元模式和複合享元模式
關於享元模式的幾點補充
享元模式總結
第15章:介紹如何提供--種間接訪問機制來實現對象的遠程訪問或受限訪問
收費商務信息查詢系統的設計
完整解決方案
遠程代理
虛擬代理
Java動態代理
代理模式總結
第四部,分交互的藝術一行 爲型模式
第16章:介紹如何讓多個對象都有機會來處理同一個請求
採購單的分級審批.
職責鏈模式概
完整解決方案
純與不純的職責鏈模式
職責鏈模式總結
第17章:介紹如何將請求的發送者和請求接收者完全解耦
自定義功能鍵
命令模式概述
完整解決方案
命令隊列的實現
撤銷操作的實現
宏命令
命令模式總結
第18章:介紹如何自定義一個簡單的語言
機器人控制程
文法規則和抽象語法樹
解釋器模式概述
完整解決方案.
再談Context的作用
解釋器模式總結
第19章:介紹如何間接遍歷一個聚合對象中的元素
銷售管理系統中數據的遍歷
迭代器模式概述
完整解決方案
使用內部類實現迭代器
JDK內置迭代器
迭代器模式總結
第20章:介紹如何協調多個對象之間複雜的相互調用
客戶信息管理窗口的初始設計
中介者模式概述
完整解決方案
中介者與同事類的擴展
中介者模式總結
第21章:介紹如何在軟件中實現撤銷功能
可悔棋的中國象棋
備忘錄模式概述
完整解決方案
實現多次撤銷
再談備忘錄的封裝
備忘錄模式總結
第22章:介紹如何實現對象之間--對多的聯動
多人聯機對戰遊戲的設計
觀察者模式概述
完整解決方案
JDK對觀察者模式的支持
觀察者模式與Java事件處理
觀察者模式與MVC
觀察者模式總結
第23章:介紹如何設計和實現-一個具有多個狀態的對象
銀行系統中的賬戶類設計.
狀態模式概述
完整解決方案
共享狀態
使用環境類實現狀態轉換.
狀態模式總結
第24章:介紹如何在不修改現有代碼的前提下更換一種算法
電影票打折方案
戰略模式概述
完整解決方案
策略模式的兩個典型應用
戰略模式總結
第25章:介紹如何爲一個複雜算法的某些步驟提供多種實現方式
銀行利息計算模塊
模板方法模式概述
完整解決方案
鉤子方法的使用
模板方法模式總結
第26章:介紹如何操作一個包含多種類型對象的複雜結構
OA系統中員工數據彙總
訪問者模式概述
完整解決方案
訪問者模式與組合模式聯用
訪問者模式總結
想要獲取這份設計模式藝術之道,軟件開發人員內功修煉手冊的電子版文檔,添加微信即可獲取哦(msbjy2019)