抽象工厂模式
一、实例代码
1 /** 2 * 抽象产品A的接口 3 * @author abc 4 * 5 */ 6 public interface AbstractProductA { 7 //定义抽象产品A相关的操作 8 } 9 10 /** 11 * 抽象产品B的接口 12 * @author abc 13 * 14 */ 15 public interface AbstractProductB { 16 //定义抽象产品B相关的操作 17 } 18 19 /** 20 * 产品A的具体实现 21 */ 22 public class ProductA1 implements AbstractProductA { 23 //实现产品A的接口中定义的操作 24 } 25 26 /** 27 * 产品A的具体实现 28 */ 29 public class ProductA2 implements AbstractProductA { 30 //实现产品A的接口中定义的操作 31 } 32 33 /** 34 * 产品B的具体实现 35 */ 36 public class ProductB1 implements AbstractProductB { 37 //实现产品B的接口中定义的操作 38 } 39 40 /** 41 * 产品A的具体实现 42 */ 43 public class ProductB2 implements AbstractProductB { 44 //实现产品B的接口中定义的操作 45 } 46 47 /** 48 * 抽象工厂的接口,声明创建抽象产品对象的操作 49 * @author abc 50 * 51 */ 52 public interface AbstractFactory { 53 /** 54 * 实例方法,创建抽象产品A的对象 55 * @return 抽象产品A的对象 56 */ 57 public AbstractProductA createProductA(); 58 59 /** 60 * 实例方法,创建抽象产品B的对象 61 * @return 抽象产品B的对象 62 */ 63 public AbstractProductB createProductB(); 64 } 65 66 /** 67 * 具体的工厂实现对象,实现创建具体的产品对象的操作 68 */ 69 public class ConcreateFactory1 implements AbstractFactory { 70 71 @Override 72 public AbstractProductA createProductA() { 73 return new ProductA1(); 74 } 75 76 @Override 77 public AbstractProductB createProductB() { 78 return new ProductB1(); 79 } 80 } 81 82 /** 83 * 具体的工厂实现对象,实现创建具体的产品对象的操作 84 */ 85 public class ConcreteFactory2 implements AbstractFactory { 86 87 @Override 88 public AbstractProductA createProductA() { 89 return new ProductA2(); 90 } 91 92 @Override 93 public AbstractProductB createProductB() { 94 return new ProductB2(); 95 } 96 97 } 98 99 public class Client {100 public static void main(String[] args) {101 //创建抽象工厂对象102 AbstractFactory af = new ConcreateFactory1();103 //通过抽象工厂来获取一系列的对象,如产品A和产品B104 af.createProductA();105 af.createProductB()106 }107 }