設計模式 工廠模式

2022-08-01 07:00:15 字數 907 閱讀 9133

工廠模式的核心是:

乙個抽象類裡有兩個方法,乙個是工廠方法,用來建立產品,另外乙個方法是對產品的使用。那麼對於產品的建立(最後到底是哪種產品),其實是具體實現抽象類的時候做的事情,也就是工廠模式的核心:「由子類決定要例項化的類是哪乙個,把類的例項化推遲到了子類」。

類圖見《head fisrt 設計模式》134頁。

好處&特點:

對於「依賴倒置」的最有力的工具之一:如果不使用工廠模式,那麼高層元件將依賴底層元件。使用工廠模式之後,高層元件和底層元件都依賴於抽象。

解耦建立過程和使用過程:這個層面的好處1:不同的建立可以使用相同的使用流程(質量控制);好處2:增加產品或者改變產品的實現,抽象類不受影響。

簡單工廠相比工廠模式有什麼缺點:

不能保證除了建立之外,其他都使用統一的流程。

之所以造成這個問題,是因為,簡單工廠,每個客戶類都是new出來的。例如《head first 第119頁》:

pizzastore nystore = new pizzastore(nyfactory);

pizzastore chicagostore = new pizzastore(chicagofactory);

這樣就導致了pizzastore的orderpizza方法有著被更改的可能性(例如被子類覆蓋重寫),可以這麼理解:nystore、chicagostore是兩個不同的物件,所以他們分別在記憶體的不同位置,那麼對於製作他們的orderpizza方法,也存在兩個不同的位址,所以不能保證流程完全一致。

而工廠方法就不同了,工廠方法中,每個商店都繼承自抽象類,他們的orderpizza方法都來自於抽象基類,並且定義為final方法,只有抽象基類中可以修改方法,這就做到了流程的一致,final是個重點。

設計模式 工廠模式 抽象工廠模式

建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...

設計模式 工廠設計模式

用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...

設計模式 工廠設計模式

工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...