1、java版java
抽象產品A -> ProductA.java : ide
public interface ProductA { public void fun(); }
具體產品A1 -> ProductA1.java :測試
public class ProductA1 implements ProductA{ @Override public void fun() { System.out.println("ProudctA1 -> fun()"); } }
具體產品A2 -> ProductA2.java :get
public class ProductA2 implements ProductA { @Override public void fun() { System.out.println("ProductA2 -> fun()"); } }
抽象產品B -> ProductB.java : 產品
public interface ProductB { public void fun(); }
具體產品B1 -> ProductB1.java :it
public class ProductB1 implements ProductB { @Override public void fun() { System.out.println("ProductB1 -> fun()"); } }
具體產品B2 -> ProductB2.java :class
public class ProductB2 implements ProductB { @Override public void fun() { System.out.println("ProductB2 -> fun()"); } }
抽象工廠 -> Factory.java :im
public interface Factory { public ProductA getProductA(); public ProductB getProductB(); }
具體工廠1 -> Factory1.java :static
public class Factory1 implements Factory { @Override public ProductA getProductA() { return new ProductA1(); } @Override public ProductB getProductB() { return new ProductB1(); } }
具體工廠2 -> Factory2.java :di
public class Factory2 implements Factory { @Override public ProductA getProductA() { return new ProductA2(); } @Override public ProductB getProductB() { return new ProductB2(); } }
測試 -> Test.java :
public class Test { public static void main(String[] args) { Factory factory; factory = new Factory1(); factory.getProductA().fun(); factory.getProductB().fun(); factory = new Factory2(); factory.getProductA().fun(); factory.getProductB().fun(); } }
測試結果:
ProudctA1 -> fun()
ProductB1 -> fun()
ProductA2 -> fun()
ProductB2 -> fun()