天天看點

炒冷飯系列:設計模式 工廠方法模式一、什麼是工廠方法模式二、模式中包含的角色及其職責三.工廠方法模式實作四、工廠方法模式和簡單工廠模式比較

工廠方法模式同樣屬于類的建立型模式又被稱 為多态工廠模式 。工廠方法模式的意義是定義一個建立

産品對象的工廠接口,将實際建立工作推遲到子類當中。 核心工廠類不再負責産品的建立,這樣核心類成為一個

抽象工廠角色,僅負責具體工廠子類必須實作的接口, 這樣進一步抽象化的好處是使得工廠方法模式可以使系 統在不修改具體工廠角色的情況下引進新的産品。

1.抽象工廠(creator)角色

工廠方法模式的核心,任何工廠類都必須實作這個接口。

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

具體工廠類是抽象工廠的一個實作,負責執行個體化産品對象。

3.抽象(product)角色

工廠方法模式所建立的所有對象的父類,它負責描述所有執行個體所共有的公共接口。

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

工廠方法模式所建立的具體執行個體對象

結構圖:

炒冷飯系列:設計模式 工廠方法模式一、什麼是工廠方法模式二、模式中包含的角色及其職責三.工廠方法模式實作四、工廠方法模式和簡單工廠模式比較

類圖uml:

炒冷飯系列:設計模式 工廠方法模式一、什麼是工廠方法模式二、模式中包含的角色及其職責三.工廠方法模式實作四、工廠方法模式和簡單工廠模式比較

fruit.java apple.java banana.java

fruitfactory.java applefactory .java bananafactory.java

現在我們來測試下:

運作可以看到下面的輸出:

這個模式的好下面我們來增加一種水果pear:

pearfactory.java pear.java

然後測試代碼如下:

測試輸出如下:

相關資料:

java 多态

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

體類上。工廠方法模式之是以有一個别名叫多态性工廠模式是因為具體工

廠類都有共同的接口,或者有共同的抽象父類。當系統擴充需要添加新的産品對象時,僅僅需要添加一個具體對

象以及一個具體工廠對象,原有工廠對象不需要進行任何修改,也 不需要修改客