设计模式学习笔记------抽象工厂模式

              抽象工厂模式

一、实例代码

  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和产品B
104         af.createProductA();
105         af.createProductB()
106     }
107 }

 

posted @ 2018-01-15 15:51  有悟还有迷  阅读(157)  评论(0编辑  收藏  举报