建立類模式包括工廠方法模式、建造者模式、抽象工廠模式、單例模式和原型模式,它們都能夠提供物件的建立和管理職責。其中的單例模式和原型模式非常容易理解,單例模式是要保持在記憶體中只有乙個物件,原型模式是要求通過複製的方式產生乙個新物件,這兩個不容易混淆。下面主要分析其它三種模式。
一、工廠方法模式vs建造者模式
1、意圖不同
在工廠方法模式裡,關注的是乙個產品整體,無須關心產品的各部分是如何建立出來的;但在建造者模式中,乙個具體產品的產生是依賴各個部件的產生以及裝配順序,它關注的是「由零件一步一步地組裝出產品物件」,簡單地說,工廠模式是乙個物件建立的粗線條應用,建造者模式則是通過細線條勾勒出乙個複雜物件,關注的是產品組成部分的建立過程。
2、產品的複雜度不同
工廠方法模式建立的產品一般都 是單一性質產品,而建造者模式建立的則是乙個復合產品,它由各個部件復合而成,部件不同產品物件當然不同。這不是說工廠方法模式建立的物件簡單,而是指它們的粒度大小不同。一般來說,工廠方法模式的物件粒度比較粗,建造者模式的產品物件粒度比較細。
實踐:如果需要詳細關注乙個產品部件的生產、安裝步驟,則選擇建造者,否則工廠。
二、抽象工廠模式vs建造者模式
抽象工廠模式就像乙個巨頭有許多「工廠」,使用「工廠」來描述構建者,而建造者模式就像乙個工廠有許多「車間」,使用「車間」來描述構建者。抽象工廠模式是從乙個更高層次去看物件的建立,具體到工廠內部還有很多車間,但這些都是隱藏在工廠內部的細節,對外不公布。而建造者模式就不同了,它是由車間構成,不同的車間完成不同的建立和裝配任務,乙個完整的汽車生產過程需要引擎製造車間、引擎裝配車間的配合才能完成,它們配合的基礎就是設計藍圖,而這個藍圖在車間主任手中(導演類)。建造者模式更關心建造過程。雖然從外界來看乙個車間還是生產車輛,但是這個車間的轉型是非常快的,只要重新設計乙個藍圖,即可產生不同的產品。
實踐:相對來說,抽象工廠模式比建造者模式的尺度要大,它關注產品整體。而建造者模式關注構建過程,因此建行者模式可以很容易地構建出乙個嶄新的產品,只要導演類能夠提供具體的工藝流程。也正因為如此,如果希望遮蔽物件的建立過程,只提供乙個封裝良好的物件,則可以選擇抽象工廠方法模式。而建造者模式可以用在構件的裝配方面,如通過裝配不同的元件或者相同元件的不同順序,可以產生乙個新的物件,它可以產生乙個非常靈活的架構,方便地擴充套件和維護系統。
結構類模式大PK 總結
結構類模式包括介面卡模式 橋梁模式 組合模式 裝飾模式 門面模式 享元模式和 模式,它們都是通過組合類或物件產生更大結構以適應更高層次的邏輯需求。一 模式vs裝飾模式 模式把當前的行為或功能委託給其他物件執行,類負責介面限定 是否可以呼叫真實角色,以及是否對傳送到真實角色的訊息進行變形處理,它不對被...
結構類模式大PK 總結
結構類模式包括介面卡模式 橋梁模式 組合模式 裝飾模式 門面模式 享元模式和 模式,它們都是通過組合類或物件產生更大結構以適應更高層次的邏輯需求。一 模式vs裝飾模式 模式把當前的行為或功能委託給其他物件執行,類負責介面限定 是否可以呼叫真實角色,以及是否對傳送到真實角色的訊息進行變形處理,它不對被...
設計模式之建立類模式PK
建立類模式包括 工廠方法模式 建造者模式 抽象工廠模式 單例模式 原型模式 建立類模式能夠提供物件的建立和管理職責.其中單例模式和原型模式非常容易理解,單例模式是要保持在記憶體中只有乙個物件,原型模式是要求通過複製的方式產生乙個新的物件,這兩個不容易混淆.工廠方法模式注重的是整體物件的建立方法,而建...