工廠方法模式詳解

2021-07-01 20:50:45 字數 955 閱讀 8610

工廠方法模式url圖如下:

在簡單工廠模式進一步抽象而來,解決了如何例項化乙個物件,也克服了簡單工廠模式中違背的「開-閉原則」的缺點。

工廠方法模式中,核心的工廠類不再提供所有產品的建立工作,而是將具體的產品交給具體的工廠類去實現。核心工廠類值負責制定具體工廠需要實現的介面即可,至於具體的工作交給子類去實現。

假設我們有乙個手機加工廠,具體的子工廠來生產android手機和iphone。類圖如下:

根據類圖可以定義客戶端呼叫**:

//獲得製造android手機的工廠

creatorphone androidfactory = new creatorandroidphone();

//根據android手機工廠製造android機

phone androidphone = androidfactory.createphone();

androidphone.call();

由於工廠方法模式中的核心是抽象的工廠類,所有的工廠類必須實現抽象工廠類的介面。當系統需要擴充套件新增新的產品,則只需要新增乙個具體的產品物件和具體的工廠物件即可。不需要對原有工廠進行修改。也不需要修改客戶端,這就符合了「開閉原則」。

使用工廠模式,客戶端需要判斷要例項化哪個具體的工廠。具體的實現工廠可能需要增加**量。

在android中activity和service等核心組建中,都定義了oncreate()方法,例如當我們要顯示使用者介面的時候,一般都會在oncreate()中使用setcontentview()方法,這個方法是在activity中定義的,在編寫具體的activity時有繼承者實現。

工廠方法模式 工廠方法模式

工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...

工廠方法模式 工廠方法模式 二

工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...

詳解工廠模式(簡單工廠 工廠方法 抽象工廠)

當你有大量的實現同一介面的類的時候,在合適的時候例項化合適的類,如果把這些 new 分散到專案的各個角落,不僅會使業務邏輯變的混亂並且使得專案難以維護。這時候如果引進工廠模式的概念,就能很好的處理這個問題。我們還可以通過應用程式配置或者提供引數的形式讓工廠類為我們返回合適的的例項。工廠類,它把例項化...