創建型模式
在軟件工程中,創建型模式是處理對象創建機制的設計模式,視圖以適合情況的方式來創建對象。對象的創建基本形式可能會導致設計問題或增加設計的複雜性。創建型的設計模式通過控制這個對象創建來解決這個人體。
創建型設計模式有兩個主導思想組成。一個是封裝有關係統使用哪些具體類的知識。另一個是隱藏這些具體類的實例是如何創建和組合的。
創建型設計模式進一步分爲對象創建模式和類創建模式,其中對象創建模式處理對象創建和類創建模式處理類實例化。更詳細地說,對象創建模式將其對象創建的一部分推遲到另一個對象,而類創建模式將其對象創建推遲到子類。
創建型模式有五種:
抽象工廠模式(Abstract factory
pattern): 提供一個接口, 用於創建相關或依賴對象的家族, 而不需要指定具體類。
建造模式(Builder pattern): 使用建造模式封裝一個產品的構造過程, 並允許按步驟構造. 將一個複雜對象的構建與它的表示分離, 使得同樣的構建過程可以創建不同的表示。
工廠模式有兩種:
- 簡單工廠模式(Simple factory pattern):是類的創建模式,又叫做靜態工廠方法(Static Factory
Method)模式。簡單工廠模式是由一個工廠對象決定創建出哪一種產品類的實例。 - 工廠方法模式(factory method pattern): 定義了一個創建對象的接口, 但由子類決定要實例化的類是哪一個.
工廠方法讓類把實例化推遲到子類.
原型模式(prototype pattern): 通過給出一個原型對象來指明所有創建的對象的類型,然後用複製這個原型對象的辦法創建出更多同類型的對象。
單例模式(Singletonpattern):確保一個類只有一個實例,並提供全局訪問點,這個類也被稱爲單例類。
結構型模式
結構型模式主要是用於處理類或者對象的組合,它描述瞭如何讓類或者對象更好的組合起來,適從程序的結構上來解決模塊之間的耦合問題。
結構型模式有七種:
適配器模式(Adapter pattern): 將一個類的接口, 轉換成客戶期望的另一個接口. 適配器讓原本接口不兼容的類可以合作無間.
對象適配器使用組合, 類適配器使用多重繼承.橋樑模式(Bridge pattern): 使用橋樑模式通過將實現和抽象放在兩個不同的類層次中而使它們可以獨立改變。
裝飾者模式(decorator pattern): 動態地將責任附加到對象上, 若要擴展功能, 裝飾者提供了比繼承更有彈性的替代方案。
外觀模式(facade pattern): 提供了一個統一的接口, 用來訪問子系統中的一羣接口. 外觀定義了一個高層接口,讓子系統更容易使用。
亨元模式(Flyweight Pattern): 如想讓某個類的一個實例能用來提供許多”虛擬實例”, 就使用蠅量模式。
代理模式(Proxy pattern): 爲另一個對象提供一個替身或佔位符以控制對這個對象的訪問。
行爲型模式
行爲型模式主要是用於描述類或者對象是怎麼交互和分配職責的。它涉及到算法和對象鍵的職責分配,不僅是描述對象或者類的模式,還描述了他們之間的通信
方式,它將你的注意力從控制流轉移到了對象間的關係上來。行爲型類模式採用繼承機制在類間分派行爲,而行爲型對象模式使用對象複合而不是繼承。
行爲型模式有11種:
責任鏈模式(Chain of responsibility
pattern):通過責任鏈模式,你可以爲某個請求創建一個對象鏈.每個對象依序檢查此請求並對其進行處理或者將它傳給鏈中的下一個對象。解釋器模式(Interpreter pattern): 解釋器模式是行爲型的模式,比較少用。使用解釋器模式簡單來說就是爲語言創建解釋器。
迭代器模式(Iterator pattern): 提供一種方法順序訪問一個聚合對象中的各個元素, 而又不暴露其內部的表示。
中介者模式(Mediator pattern) :使用中介者模式來集中相關對象之間複雜的溝通和控制方式,使得這些對象不必相互明顯引用。從而使它們可以較鬆散地耦合。當這些對象中的某些對象之間的相互作用發生改變時,不會立即影響到其他的一些對象之間的相互作用。從而保證這些相互作用可以彼此獨立地變化。
備忘錄模式(Memento pattern): 當你需要讓對象返回之前的狀態時(例如, 你的用戶請求”撤銷”), 你使用備忘錄模式。
觀察者模式(observer pattern):在對象之間定義一對多的依賴,這樣一來,當一個對象改變狀態,依賴它的對象都會收到通知,並自動更新。
狀態模式(State pattern): 允許對象在內部狀態改變時改變它的行爲, 對象看起來好象改了它的類。
策略模式(strategy pattern):定義了算法族,分別封閉起來,讓它們之間可以互相替換,此模式讓算法的變化獨立於使用算法的客戶。
模板方法模式(Template pattern):在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中.模板方法使得子類可以在不改變算法結構的情況下,重新定義算法中的某些步驟。
訪問者模式(visitor pattern): 當你想要爲一個對象的組合增加新的能力, 且封裝並不重要時, 就使用訪問者模式。
參考資料:《JAVA與模式》26天系列