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)迭代器:將對集合的訪問與遍歷從集合物件中分離出來到迭代器中。
本文**:
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)迭代器:將對集合的訪問與遍歷從集合物件中分離出來到迭代器中。
本文**:
簡單理解設計模式
1 什麼是設計模式 對特定問題的一種解決方案。注 特定問題 在軟體開發過程中重複出現的問題。解決方案 就是解決辦法,既解決問題的方式或方法。例子 醫生給病人看病,每一種病都是一種設計模式。比如乙個人感冒了,醫生給他開了感冒藥,這個感冒藥就是乙個設計模式。2 設計模式的組成 模式名稱 就是對每個設計模...
設計模式(簡單理解)
說在前頭。本文通過對js設計模式的學習,總結出一些基本看一遍就能明白的設計模式,不管前端還是後端的設計模式基本上都是這個原理,只是實現方法不一樣罷了。還有一些目前沒來得及總結,後面再補充。單例模式 僅有乙個例項,呼叫時若無例項則建立例項,若有例項則重複利用 策略模式 將乙個個方法通過乙個公共方法組合...
MVC設計模式的簡單理解
mvc設計模式中有三個角色 模型 檢視 控制器,其核心是控制器為檢視物件和模型物件建立溝通渠道,就像m和v的中間協調人,將檢視物件和模型物件分離開來。1.在模型物件中封裝資料和基本行為模型物件維護應用程式的資料,並定義運算元據的特定邏輯。模型物件可以復用,因為它所表示的知識適用於特定的問題領域。理想...