02 工廠方法模式

2021-08-17 01:52:55 字數 1714 閱讀 8122

1.什麼是工廠方法模式

工廠方法模式同樣屬於類的建立型模式又被稱為多型工廠模式 。工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角色的情況下引進新的產品。

通過簡單工廠實現

用工廠方法

新建乙個抽象工廠類

當係新增乙個pear類時候,不需要在修改上面的**,只需要新建乙個pea***ctory類

main方法上只需要新增一點**即可,這樣的工廠模式很符合開閉原則,原來的**原封不動,但是擴充套件性有良好,可以方便新增新的產品進來(pear)

二.模式中包含的角色及其職責

1.抽象工廠(creator)角色

工廠方法模式的核心,任何工廠類都必須實現這個介面。

即本案例中的fruitfactory介面

2.具體工廠( concrete creator)角色

具體工廠類是抽象工廠的乙個實現,負責例項化產品物件。

工廠方法模式所建立的所有物件的父類,它負責描述所有例項所共有的公共介面。

即案例中是fruit類

4.具體產品(concrete product)角色

三、工廠方法模式和簡單工廠模式比較

工廠方法模式與簡單工廠模式在結構上的不同不是很明顯。工廠方法類的核心是乙個抽象工廠類,而簡單工廠模式把核心放在乙個具體類上。

工廠方法模式之所以有乙個別名叫多型性工廠模式是因為具體工廠類都有共同的介面,或者有共同的抽象父類。

當系統擴充套件需要新增新的產品物件時,僅僅需要新增乙個具體物件(比如pear)以及乙個具體工廠物件(pea***ctory),原有工廠物件不需要進行任何修改,也不需要修改客戶端,很好的符合了「開放-封閉」原則。而簡單工廠模式在新增新產品物件後不得不修改工廠方法,擴充套件性不好。

工廠方法模式退化後可以演變成簡單工廠模式。

工廠方法是簡單工廠方法的公升級

工廠方法的原理圖

02 工廠方法模式

結構 product 抽象產品 它是定義產品的介面,是工廠方法模式所建立物件的超型別,也就是產品物件的公共父類。concreteproduct 具體產品 它實現了抽象產品介面,某種型別的具體產品由專門 的具體工廠建立,具體工廠和具體產品之間一對應。factory 抽象工廠 在抽象工廠類中宣告了工廠方...

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

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

設計模式 02工廠方法設計模式

場景 使用者需要下單美國披薩,中國披薩,前乙個簡單工廠模式就不是能很好的滿足現在的需求了。pizza頂級父類 public abstract class pizza public void cut public void box public pizza setname string name 不同...