設計模式筆記---總結學習
1 中介者模式也叫調停者(Mediator)模式
中介者模式,定義了一箇中介物件來封裝一系列物件之間的互動關係。中介者使各個物件之間不需要顯式地相互引用,從而使耦合性降低,而且可以獨立地改變它們之間的互動行為。
2 外觀模式也叫門面(Facade)模式
外觀模式提供了一個統一的介面,用來訪問子系統中的一群介面。外觀定義了一個高層介面,讓子系統更容易使用。
3 組合模式也叫合成模式
組合模式允許你將物件組合成樹形結構來表現”部分-整體“的層次結構,使得客戶以一致的方式處理單個物件以及物件的組合。
GOF23種設計模式、
建立型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結構型模式,共七種:介面卡模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式。
不變模式:
一個物件的狀態在物件被建立之後就不再變化,這就是所謂的不變模式。
代理模式的定義:為其他物件提供一種代理以控制對這個物件的訪問。在某些情況下,一個物件不適合或者不能直接引用另一個物件,而代理物件可以在客戶端和目標物件之間起到中介的作用。
委託模式是軟體設計模式中的一項基本技巧。在委託模式中,有兩個物件參與處理同一個請求,接受請求的物件將請求委託給另一個物件來處理。
代理模式的代理類和實現類是上下級關係,而委託模式的委託類和被委託類是平級關係。
程式碼編寫有個這樣的原則:能不用繼承就不用繼承,能使用委託實現的就不使用繼承。兩個類有明顯示的層級關係時使用繼承,沒有明顯的層級關係,僅僅是為了在一個類中使用另一個類的方法時應該使用委託。
根據《重構》一書稱:現在有濫用繼承的趨勢,JDK 中 Stack 就是一個濫用繼承的典型!
java.util.Stack 繼承自 java.util.Vector,其實 Stack 與 Vector 在用途上完全是風馬牛不相及的兩個容器。
代理模式的實現:
代理模式下,目標物件從頭到尾不會有任何的改變;
代理方法中不會有任何業務相關的邏輯存在,更不會改變真正的邏輯實現。
與此相反,委託模式不僅可以自由切換被委託者,甚至可以自己實現一段邏輯(例如類載入器);
參考文獻:
https://www.cnblogs.com/java-my-life/archive/2012/05/08/2487757.html