工廠方法模式應用背景:
客戶類不關心使用哪個具體的類,只關心介面所提供的功能。
建立過程比較複雜,例如需要初始化其他關聯的資源類。
介面或者抽象類有許多實現類,客戶**需要編寫大量if-else邏輯來決定執行時使用哪個具體的實現類。
不希望給客戶程式暴露太多的類的內部結構,這樣做可以降低耦合度。
優化效能,比如快取大物件或者初始化比較耗時的物件。
defination: define an inte***ce for creating an object, but let subclasses decide which class to instantiate. factory method lets a class defer instantiation to subclass.
定義:為建立物件定義乙個介面,讓子類決定例項化哪個類。工廠方法讓乙個類的例項化延遲到子類。
工廠方法模式是對例項化過程進行封裝而形成的,客戶物件無須關心例項化這些類的細節,把他們交給工廠類,為工廠類定義乙個介面。
如果具體實現類較多,我們可以定義乙個引數化的工廠方法,根據輸入返回不同的實現子類。
public product createproduct(string type) else
else
}
靜態工廠方法工廠方法模式非常實用,但是為每個類建立乙個工廠方法方法類會引起工廠類的氾濫,此時可以用靜態工廠方法來避免——在每個類裡面實現乙個靜態的工廠方法,就不需要額外的工廠類。以integer類為例,它的靜態工廠方法如下:
public static integer valueof(int i)
else
}
靜態工廠方法的優缺點:優點:
缺點:
Java設計模式 工廠方法模式
定義乙個用於建立物件的介面,讓子類決定將哪乙個類例項化。factory method 使乙個類的例項化延遲到其子類。package car inte ce public inte ce icar inte ce package car imple import car inte ce.icar in...
java設計模式 工廠方法模式
簡單工廠模式的應用就是用來建立乙個物件,簡單工廠模式是將所有物件的初始化集於乙個具體的工廠類來實現,這個工廠類負責所有產品的建立,但是這種建立只能建立單一的產品,如簡單工廠模式裡的chickenfactory這種工廠只能生產雞肉這個系列的產品,而當需求發生變化時簡單工廠模式就無法應對了。例如 我再一...
JAVA設計模式 工廠方法模式
package com.fsti.factory.factorymethod public inte ce output package com.fsti.factory.factorymethod public class printer implements output else public...