Creation Pattern 當系統演化成依賴於對象的組合、聚集時,建立性模式帶來了更大的靈活性。 Abstract Factory:抽象工廠是建立對象族。它能確保被建立對象家族的一致性,和對象家族發生改變的靈活性,在跨平台的設計中可以得到應用。 Prototype:一種將對象產生的責任代理給自己的模式。它與C++中的拷貝函數不同,C++不支援拷貝函數的多態,即當對象使用基類的指標進行引用時,無法按照子類進行拷貝,會造成切割。Prototype在Java中得到大量的應用。 Builder:側重點在於對象建立的過程中,避免在code中出現大量的硬代碼。當被建立對象結構發生改變時。避免了對散布在程式中大量new語句的修改。 Factory Method:實現了產生對象不確定時的解決方案。實際上在C++和Java中,對於虛函數的理解比較容易,即某個方法不確定時,使用虛函數來聲明,而將具體的實現交給子類。Factory Method它實現了對象建立時的多態。 Singleton類似於一種技巧,利用OOP的技術,強制實現了有限、定量對象的產生。 對比:Factory Method實現了建立的多態;Prototype實現了拷貝的多態;Builder實現了對象建立過程的多態。 Structural Pattern 結構性模式關注於如何將類和對象組成的更大結構,它帶來了對象組合時的靈活性。 Composite:適用於表達整體-部分關係,可以忽略單個對象和合成對象之間的差別。它實際採用的是一種樹狀結構。 Decorator:與繼承不同,用代理的方式實現了多態,可以避免大量子類的派生。相應的它適用於鏈狀和樹狀的結構。 Proxy:結構與Decorator非常相似,它們的側重點不同,一種是修改對象的行為,另一種控制訪問。 Bridge:實現了抽象和實現之間的永久綁定,可以理解為在基於已有的構件上設計時,而且已有的設計可能會發生變化。它往往與Abstract Factory共同用於跨平台設計的情況。 Façade:用於對子系統提供統一的介面。 Behavioral Pattern 行為模式涉及到演算法和對象間的職責和分配。行為模式描述了通訊方式、控制方法以及對象之間的連絡方式。 Chain of responsibility:用於鏈狀結構,將職責沿鏈進行傳遞,不顯示指定責任的承擔人,由對象自己實現責任的實施。 Command:將某個職責封裝成對象,可以與memento結合在一起用於Undo。 Iterator:大量應用於演算法庫中,對遍曆操作進行封裝。 Mediator:通過中介對象的引入將網狀的結構變成以中介者為中心的星形結構,從而保證了對象結構上的穩定,即不會因為新對象的引入造成大量類中指標的修改。 Observer:經典MVC模式的變形,與Mediator的結構類似,在對象層級是星形結構。它們均是將網狀結構變成星形結構,但側重點不同。 State:經典方法狀態機器的OO實現,可大量應用於控制密集型的系統中。 Strategy:將演算法進行封裝。適合應用於對效率要求較高的軟體中,為效率的提高預留介面。 Visitor:在對象層級中實際為矩陣結構,與Abstract Factory類似。它們以採用對象的代理,為矩陣的一個維度提供靈活性和一致性。
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/manplus/archive/2006/03/25/638517.aspx