工廠方法模式,一種物件建立型的設計模式,提供建立物件的介面,讓子類決定要例項化的物件。通過依賴注入的方式達到解耦、復用的目的。
1)我們先來說下這個設計模式的關鍵點,「簡單工廠」 和 「依賴注入」, 對,就這兩個。
「簡單工廠」 :和簡單工廠類似,該模式也是按需例項所需要的物件;
「依賴注入」 :在 「簡單工廠」 對基礎上,這個模式對不同點是將物件的選擇判斷移到了呼叫者中,即 「依賴注入」。
2)我們再來看下它的類圖關係:
這裡有四個角色:抽象工廠、具體工廠,抽象產品、具體產品。
而抽象工廠和具體工廠,就是和工廠模式的區別所在,而這樣的方式,就達到了上述說的「依賴注入」的解耦目的。
產品物件的公共父類,或公共介面:
public inte***ce iproduct
實現抽象產品,定義具體的產品業務細節:
public class aproduct implements iproduct
}public class bproduct implements iproduct
}
工廠類的父類或者介面:
public inte***ce ifactory
具體實現的工廠,與業務的具體的產品物件相對應。客戶端使用的時候直接可以根據需要來說注入對於的具體工廠:
public class afactory implements ifactory
}public class bfactory implements ifactory
}
3.1具體工廠與具體產品相對應,客戶端可按需呼叫對應的工廠類來獲取對應的產品物件,即依賴注入;
3.2當生產者清楚需要什麼樣的產品,而不關心工廠細節,這時候就可以考慮使用該模式。
應用最廣泛的模式 工廠方法模式
定義乙個建立物件的介面,讓子類決定例項化哪個類。當a物件需要呼叫b物件的方法時,可以使用new關鍵字來建立乙個b例項,然後呼叫b例項的方法,這種做法的壞處在於 a類的方法直接呼叫了b類的類名 這種方式也被稱為硬編碼耦合 一旦系統需要重構 需要使用c類來代替b類時,程式不得不改寫a類 如果應用中有10...
工廠方法模式 應用
工廠方法模式,又稱工廠模式,定義乙個建立產品物件的工廠介面,將產品物件的實際建立工作推到具體子工廠類當中。這滿足建立型模式中所要求的 建立與使用相分離 的特點。將類的例項化 具體產品的建立 延遲到工廠類的子類 具體工廠 中完成,即由子類來決定應該例項化 建立 哪乙個類。工廠方法模式的主要角色如下。抽...
工廠方法模式 工廠方法模式
工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...