設計模式之創建型和結構型

 

創建型模式

1、單例模式 :確保類只有一個實例對象。該實例由類自身保存且可通過類的一個方法獲取。

2、原型模式:從一個對象再創建另外一個可定製(深複製、淺複製或其它)的對象,而且不需要知道任何創建的細節。

3、建造者模式:一個對象的創建步驟或流程固定而具體的每個步驟(流程)實現有差異時使用的模式。

4、工廠方法模式:對單個工廠和與之對應產品的抽象。抽象的工廠只‘生產’單一類型的抽象的產品。

5、抽象工廠模式:對多個工廠和與之分別對應產品的抽象。抽象的工廠可‘生產’多種類型的抽象的產品。

 

結構型模式

1、代理模式Proxy:爲其它對象提供一個代理以控制對這個對象的訪問。

PK適配器模式:使用的場合目的不同,適配器模式是爲了使新的現有接口兼容方便對原有類的使用。代理模式則無此顧慮它只是爲了控制對原有對象的訪問。

2、適配器模式Adapter:將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由於接口不兼容而不能一起工作的哪些類可以一起工作。

3、外觀模式Façade:爲子系統的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加易於使用。

‘適配器的升級版’:整合統一多個不同的接口以達到一致簡便的使用它們的目的。

4、享元模式FlyWeight:運用共享技術有效地支持大量細粒度的對象。

當需要實例化很多對象時,通過抽取它們的共同部分、特有部分,以達到共用共同部分以節省資源開銷的模式。

5、裝飾模式Decorator:動態的給一個對象添加一些額外的職責,就增加功能來說,裝飾模式比生成子類更爲靈活。

也是種‘嵌套’,但不同於組合模式:裝飾模式有個最底層的‘固定部分‘,‘嵌套’部分是爲‘固定部分’進行補充而有層次的添加不同的行爲或屬性。

問題:‘循環’地裝飾。

6、橋接模式Bridge:將抽象部分與它的實現部分分離,使它們可以獨立地變化。

通過聚合或組合來達到抽象部分與實現部分的分離。聚合的層次上升爲“抽象“的高度,符合了開放封閉原則。

問題:大話設計模式例子中只實現了一對一的關係:。

應該可以實現一對多的關係:一種抽象只聚合或組合另幾種抽象。

比如手機品牌還可以聚合手機硬件。

和工廠方法模式的PK:

連接的層次不同,Bridge模式是“抽象“之間的關係vs工廠模式是具體的依賴(一個工廠對應一個產品)。

自己提到一對多的”新橋接模式”對應抽象工廠模式。

7、組合模式Composite:將對象組合成樹形結構以表示“部分-整體”的層次結構。組合模式使得用戶對單個對象和組合對象的使用具有一致性。

層次嵌套結構的表示:每層都應有的固有部分(葉子)、嵌套部分(枝幹)。

問題:嵌套的循環。‘引用環‘,爲避免死循環需人工判斷。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章