抽象工廠模式:提供一個接口,用于創建相關或依賴對象的家族,而不需要明確指定具體類。
抽象工廠允許客戶使用抽象的接口來創建一組相關的產品,而不需要知道實際產出的具體產品是什么。
烤魚之抽象工廠模式類圖: 類A,B實現了接口TiaoLiao,分別是調料A,調料B。FactoryA,FactoryB是AbstractFactory的子類,通過create方法來實例化TiaoLiao。
TiaoLiao接口代碼實現:
public interface TiaoLiao {}A類代碼實現:
public class A implements TiaoLiao{ public A(){ System.out.B類代碼實現:public class B implements TiaoLiao{ public B(){ System.out.println("調料B"); }}AbstractFactory類代碼實現:
public abstract class AbstractFactory { public abstract TiaoLiao create();}FactoryA類代碼實現:
public class FactoryA extends AbstractFactory{ @Override public TiaoLiao create() { // TODO Auto-generated method stub return new A(); }}FactoryB類代碼實現:
public class FactoryB extends AbstractFactory{ @Override public TiaoLiao create() { // TODO Auto-generated method stub return new B(); }}KaoYu類代碼實現:
public class KaoYu { AbstractFactory abstractFactory; public KaoYu(AbstractFactory abstractFactory){ this.abstractFactory = abstractFactory; } public TiaoLiao orderFish(){ return abstractFactory.create(); }}測試類AbstractFactoryTest代碼實現:
public class AbstractFactoryTest { public static void main(String[] args){ AbstractFactory abstractFactory = new FactoryA(); KaoYu kaoYu = new KaoYu(abstractFactory); kaoYu.orderFish(); AbstractFactory abstractFactory2 = new FactoryB(); KaoYu kaoYu2 = new KaoYu(abstractFactory2); kaoYu2.orderFish(); }}運行結果:
調料A調料B新聞熱點
疑難解答