這篇是對劉偉《設計模式》的總結,GoF23總共分爲創建型、結構型、行爲型三類。
UML:抽象爲實,接口爲虛
創建型 -- 5
(1)簡單工廠模式、工廠模式、抽象工廠模式的區別
模式名稱 | 理解 |
簡單工廠模式 | 工廠類是核心類,包含複雜的邏輯結構 |
工廠模式 | 一種抽象工廠只能生產一種產品 |
抽象工廠模式 | 產品等級結構 |
(2)工廠方法模式引入了抽象的工廠類,而將具體產品的創建過程封裝在抽象工廠類的子類,也就是具體工廠類中。
(3)聚合和組合的區別 -- 前聚空後主實
聚合 -- 注入 組合 -- 生命週期
兩者都表示一個整體與部分的關係
(4)建造者 -- 指揮者
(5)原型模式 -- 深克隆/淺克隆 -- clone()函數
(6)單例模式的三要點:一是某個類只能有一個實例;二是它必須自行創建這個實例;三是它必須自行向整個系統提供這個實例。
結構型 -- 7
(1)結構型模式關注如何將現有類或現有對象組織在一起形成更加強大的結構
(2)合成複用原則->在系統中應當儘量使用關聯關係來替代繼承關係
(3)extend 繼承 -- super -- 具體類
extend 抽象類
implements 接口實現
(4)適配器模式
(5)橋接模式 -- 橋接模式將繼承關係轉換爲關聯關係,從而降低了類與類之間的耦合,減少了代碼編寫量。
(6)組合模式 -- 形成樹形結構 -- P186
容器構件類既有繼承的關係,又有組合關係
(7)裝飾模式 -- 一種用於替代繼承的技術,它通過一種無須定義子類的方式來給對象動態增加職責,使用對象之間的關聯關係取代類之間的繼承。
final https://www.cnblogs.com/xiaoxi/p/6392154.html
(8)外觀模式 -- 提供了統一的入口 -- 外觀類和子系統之間的關係
P225 外觀模式的注意點:
1. 不要試圖通過外觀類爲子系統增加新的行爲
2. 符合迪米特法則
(9)享元模式
存在大量相同或相似的對象 -- 通過共享技術實現相同或相似的細粒度對象的複用
(10)代理模式
通過一個代理對象來間接訪問某些直接訪問會出錯誤的對象
行爲型 -- 11
行爲型模式關注系統中對象之間的相互交互,研究系統在運行時對象之間的相互通信與協作,進一步明確對象的職責。
(1)職責鏈模式
P265 假條審批 -- 將請求沿着鏈進行傳遞
(2)命令模式
P278 電視遙控器 遙控器 -> 按鈕 -> 電視機
將請求發送者與請求接收者解耦,請求發送者通過命令對象來間接引用接收者。
(3)解釋器模式
用於描述如何構成一個簡單的語言解釋器,主要應用於使用面嚮對象語言開發的編譯器和解釋器設計。
(4)迭代器模式
用於對一個聚合對象進行遍歷 聚合對象 -- 列表(list)/ 集合(set)
P309
(5)中介者模式
聯合國 / QQ羣
可以將系統的網狀結構轉換爲以中介者爲中心的星狀結構,中介者承擔中轉和協調的作用
(6)備忘錄模式
軟件系統的“月光寶盒” -- 撤銷操作
(7)觀察者模式
P350 定義對象間的一種一對多依賴關係,使得每當一個對象狀態發生改變時,其相關依賴對象皆得到通知並被自動更新。
觀察目標不需要了解其具體觀察者,只需要知道它們都有一個共同的接口即可。
(8)狀態模式
P372
(9)策略模式
用於算法的自由切換和擴展
(10)模板方法模式
定義一個操作中算法的骨架,而將一些步驟延遲到子類中。
(11)訪問者模式
P414
參考資料:
(1)史上最全設計模式導學目錄(完整版):https://blog.csdn.net/lovelion/article/details/17517213
(2)課件和源碼:https://download.csdn.net/download/wjf_1997/10504489