抽象工廠模式
抽象工廠模式是在工廠模式的基礎上增加的一層抽象概念。如果比較抽象工廠模式和工廠模式,我們不難發現前者只是增加了一層抽象的概念。抽象工廠是乙個父類工廠,可以建立其它工廠類。故我們也叫它「工廠的工廠」。
以電腦組裝為例,對於裝機工程師而言,他只知道組裝一台電腦,需要相應的配件,但是具體使用什麼樣的配件,還得由客戶說了算。也就是說裝機工程師只是負責組裝,而客戶負責選擇裝配所需要的具體的配件。因此,當裝機工程師為不同的客戶組裝電腦時,只需要根據客戶的裝機方案,去獲取相應的配件,然後組裝即可。
抽象工廠模式的每個工廠創造出來的都是一族產品,而不是乙個或者一組。組是可以隨意組合的!其實工廠方法模式和抽象工廠模式就這點點差別。
看一下抽象工廠模式的uml結構圖:
據說最早的應用是用來建立在不同作業系統的視窗環境下都能夠執行的系統。比如在windows與unix系統下都有視窗環境的構件,在每乙個作業系統中,都有乙個視窗構件組成的構件家族。我們可以通過乙個抽象角色給出功能描述,而由具體子類給出不同作業系統下的具體實現,如圖:
可以發現上面產品類圖有兩個產品等級結構,分別是button與text;同時有兩個產品族:unix產品族與windows產品族。
系統對產品物件的建立要求由乙個工廠的等級結構滿足。其中有兩個具體工廠角色,即unixfactory和winfactory。unixfactory物件負責建立unix產品族中的產品,而winfactory負責建立windows產品族中的產品。
顯然乙個系統只能夠在某乙個作業系統的視窗環境下執行,而不能同時在不同的作業系統上執行。所以,系統實際上只能消費屬於同乙個產品族的產品。
在現代的應用中,抽象工廠模式的使用範圍已經大大擴大了,不再要求系統只能消費某乙個產品族了。
抽象工廠模式 抽象工廠模式
抽象工廠模式其實是圍繞了乙個超級工廠建立其他的工廠 可參考工廠模式 這個超級工廠又可以想像成是其他工廠的工廠,這種設計模式是一種建立型模式。在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指出其類。每個生成的工廠都能按照工廠模式提供物件。意圖提供乙個建立一系列相關或相互依賴物件的介面,...
工廠模式 抽象工廠模式
這裡使用簡單的話來講解工廠模式,不涉及程式設計 什麼是工廠模式呢?我的理解是對抽象介面例項的封裝。假如有乙個介面,有若干的實現類,代表不同的例項。傳統產生物件的方法是直接new乙個出來,對於每個例項都要new,當實現介面的類較多時會很麻煩,並且類的實現也暴露出來了。工廠模式是一種產生物件的模式,使用...
工廠模式 抽象工廠模式
子類父類代換 場景 在不同的條件下,需要建立不同的實現子類時。如網路通訊可以使用tcp udp。可以實現同乙個介面,通過工廠類根據條件 tcp或udp 來例項化不同的子類。這些子類符合黎克特制代換原則。public inte ce tlprotocol public class tcpimpleme...