摘要: 摘要: 原創出處: http://www.cnblogs.com/Alandre/ 泥沙磚瓦漿木匠 但願轉載,保留摘要,謝謝!html
1、什麼是工廠方法模式java
2、模式中包含的角色及其職責設計模式
三.工廠方法模式實現app
工廠方法模式一樣屬於類的建立型模式又被稱 爲多態工廠模式 。工廠方法模式的意義是定義一個建立 產品對象的工廠接口,將實際建立工做推遲到子類當中。 核心工廠類再也不負責產品的建立,這樣核心類成爲一個 抽象工廠角色,僅負責具體工廠子類必須實現的接口, 這樣進一步抽象化的好處是使得工廠方法模式可使系 統在不修改具體工廠角色的狀況下引進新的產品。測試
1.抽象工廠(Creator)角色
工廠方法模式的核心,任何工廠類都必須實現這個接口。ui
2.具體工廠( Concrete Creator)角色
具體工廠類是抽象工廠的一個實現,負責實例化產品對象。spa
3.抽象(Product)角色
工廠方法模式所建立的全部對象的父類,它負責描述全部實例所共有的公共接口。設計
4.具體產品(Concrete Product)角色
工廠方法模式所建立的具體實例對象code
在咱們上一篇:簡單工廠模式 實際上是 工廠方法模式 的原理。
結構圖:
類圖UML:
Fruit.java Apple.java Banana.java
public interface Fruit { /* * 採集 */ public void get(); }public class Apple implements Fruit { /* * 採集 */ public void get() { System.out.println("採集Apples"); } }public class Banana implements Fruit { /* *採集 */ public void get() { System.out.println("採集Banana"); } }
FruitFactory.java AppleFactory .java BananaFactory.java
public interface FruitFactory { public Fruit getFruit(); }public class AppleFactory implements FruitFactory { @Override public Fruit getFruit() { return new Apple(); } }public class BananaFactory implements FruitFactory { public Fruit getFruit() { return new Banana(); } }
如今咱們來測試下:
public class MainClass { public static void main(String[] args) { //得到蘋果工廠 FruitFactory ff = new AppleFactory(); //經過AppleFactory 得到 Apple實例對象 Fruit apple = ff.getFruit(); apple.get(); //得到BananaFactory FruitFactory ff2 = new BananaFactory(); //經過AppleFactory 得到 Apple實例對象 Fruit banana = ff2.getFruit(); banana.get(); } }
運行能夠看到下面的輸出:
採集Apples 採集Banana
這個模式的好下面咱們來增長一種水果Pear:
PearFactory.java Pear.java
public class PearFactory implements FruitFactory { public Fruit getFruit() { return new Pear(); } }public class Pear implements Fruit { @Override public void get() { System.out.println("採集Pears"); } }
而後測試代碼以下:
//得到BananaFactoryFruitFactory ff3 = new PearFactory();//經過AppleFactory 得到 Apple實例對象Fruit pear = ff3.getFruit(); pear.get();
測試輸出以下:
採集Apples 採集Banana 採集Pears
相關資料:
java 多態
工廠方法模式與簡單工廠模式在結構上的不一樣不是很明顯。工廠方 法類的核心是一個抽象工廠類,而簡單工廠模式把核心放在一個具 體類上。工廠方法模式之因此有一個別名叫多態性工廠模式是由於具體工 廠類都有共同的接口,或者有共同的抽象父類。當系統擴展須要添加新的產品對象時,僅僅須要添加一個具體對 象以及一個具體工廠對象,原有工廠對象不須要進行任何修改,也 不須要修改客
戶端,很好的符合了「開放-封閉」原則OCP。而簡單工廠 模式在添加新產品對象後不得不修改工廠方法,擴展性很差。工廠方法模式退化後能夠演變成簡單工廠模式。
來自:java設計模式
如以上文章或連接對你有幫助的話,別忘了在文章按鈕或到頁面右下角點擊 「贊一個」 按鈕哦。你也能夠點擊頁面右邊「分享」懸浮按鈕哦,讓更多的人閱讀這篇文章。