工廠方法模式(factory method pattern)是指定義乙個建立物件的工廠介面,但讓實現這個介面的類來決定例項化哪個類工廠方法讓類的例項化推遲到子類中進行。在工廠方法模式中使用者只需要關心所需產品對應的工廠,無須關心建立細節,而且加入新的產品符合開閉原則,並且每個工廠只能建立自己的產品,職責劃分也更明確了,符合單一職責原則。
再以我們的造手機為例,之前的簡單工廠,既需要建立蘋果手機,也要建立華為、小公尺手機,到了工廠方法中,我們需要把各自品牌的工廠劃分開來,有沒有覺得很像工廠分家了,都自建工廠了。
首先我們抽象乙個工廠,手機生產的工廠:
/**建立乙個蘋果工廠,實現手機工廠:* 工廠方法 */
public
inte***ce
phonefactory
public建立乙個華為工廠,實現手機工廠:class apllefactory implements
phonefactory
}
public建立乙個小公尺工廠,實現手機工廠:class huaweifactory implements
phonefactory
}
public測試類,通過華為工廠來建立華為手機:class xiaomifactory implements
phonefactory
}
public執行結果如下:class
factorymethodtest
}
這樣我們就完成了乙個工廠方法模式,來看一下類圖:
對比可知,相比較簡單工廠複雜了不少,且隨著品牌的增加,類的個數容易過多,也增加了系統的複雜度,理解起來也相對困難。但是存在即合理,滿足開閉原則和單一職責原則,在系統的後期維護上,肯定比簡單工廠要好,當然各位看官也要權衡是否真的適合當前的場景?有時候簡單工廠會更適用。
工廠方法模式 工廠方法模式
工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...
設計模式 工廠模式之工廠方法模式
工廠方法模式是指定義乙個建立物件的介面,然後實現這個介面的工廠來決定建立什麼樣的例項。工廠方法讓類的例項推遲到子類中進行。在這個模式中,只關心需要建立的是什麼工廠,不需要關心建立的細節。而且新加入的產品符合開閉原則。1 建立支付介面,裡面定義抽象的支付方法。package com.gupao.vip...
工廠方法模式 工廠方法模式 二
工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...