一句話的設計模式


如題,實際上,我想這是很困難的。

除非——只是為了給自己做一個提醒,能夠看一眼就快速回想起該設計模式的種種記憶。

下列是我之前在學習《大話設計模式》時做的筆記總結,當中有部分措辭來自其作者程傑。(非常感謝他為神秘的設計模式搭建了如此平滑的學習通道)

1. 創建型:

(1)單例:只需一個實例時考慮。

(2)工廠方法:一般先用工廠方法解決對象創建問題。

(3)抽象工廠:當工廠方法無法滿足多系列問題時,再重構為抽象工廠。

(4)建造者:多個部件的建造實現相同,只是所需部件、建造順序不同時考慮。

(5)原型:在初始化信息不發生變化時考慮。

2. 結構型:

(1)適配器:讓接口不相容的類能協同工作。(亡羊補牢)

(2)裝飾:動態增加單個對象的額外職責,比生成子類更靈活。

(3)橋接:使繼承關系更改為組合關系,使兩者可獨立變化。(未雨綢繆)

(4)組合:用樹狀結構表示“整體-部分”的層次關系,使單個對象(葉節點)與組合對象(枝節點)的使用具有一致性。

(5)享元:為運用共享技術,支持大量細粒度對象,節省開銷。

(6)代理:控制對單個對象的訪問。

(7)外觀:子系統的高層接口,避免兩個類直接關系的第三者。

3. 行為型:

(1)觀察者:一對多依賴關系,一端變化、多端得到通知並自動更新。(目標與觀察者可實現弱耦合)

(2)模板方法:繼承+重寫解決代碼重復問題。

(3)命令:將請求發送者與具體實現者解耦,可對請求排列、取消、重做,支持事務。(多請求,單處理)

(4)職責鏈:將處理者排成鏈,沿鏈傳遞請求。(單請求,多處理)

(5)狀態:當對象內狀態改變而執行不同操作時考慮,狀態轉移邏輯不在if/switch中,而在各子類之間,增/改狀態和狀態轉換較容易。

(6)解釋器:若某特定問題發生的頻率足夠高時考慮,需定義文法表示與解釋器本身。

(7)中介者:由中介封裝一系列對象交互,減少對象間耦合,利於復用。(朋友多)

(8)訪問者:當Element較穩定、Visitor易增加時考慮。(朋友在精不在多)

(9)策略:將一系列算法逐個封裝並可相互替換,易於切換、理解、擴展。

(10)備忘錄:不破壞封裝,又要取該對象內狀態,且要求狀態還原時考慮。(保持封裝邊界)

(11)迭代器:將對集合的訪問與遍歷從集合對象中分離出來到迭代器中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM