當系統準備為使用者提供一系列相關對象,又不想讓使用者程式碼和這些對象形成耦合時,就可以使用抽象工廠模式。
1)抽象產品--Car
2)具體產品--BYDCar、TSLCar
3)抽象工廠Factory
4)具體工廠--BYDFactory、TSLFactory
/** * 抽象产品 */ public abstract class Car { public abstract String getName(); }
/** * 具体产品 */ public class BYDCar extends Car { String name; public BYDCar(String name){ this.name = name; } @Override public String getName() { return name; } }
/** * 抽象工厂 */ public abstract class CarFactoty { public abstract Car createCar(String name); }
/** * 具体工厂 */ public class BYDFactory extends CarFactoty { @Override public BYDCar createCar(String name) { return new BYDCar(name); } }
1)抽象工廠模式可以為使用者建立一系列相關的對象,是使用者和這些類別的物件解耦
2)使用抽象工廠模式可以方便的為使用者配置一些列對象。
3)在抽象工廠模式中,可以隨時增加「具體工廠」為使用者提供一組相關的物件。
如:在上面的例子中,如果用戶需要一特斯拉車,創建一個特斯拉物件和特斯拉工廠就能完成。
/** * 具体产品 */ public class TSLCar extends Car { String name; public TSLCar(String name){ this.name = name; } @Override public String getName() { return name; } }
/** * 具体工厂 */ public class TSLFactory extends CarFactoty { @Override public TSLCar createCar(String name) { return new TSLCar(name); } }
以上是Java設計模式之抽象工廠模式怎麼實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!