美文网首页
抽象工厂模式

抽象工厂模式

作者: ting723 | 来源:发表于2015-08-24 22:53 被阅读58次
    1. 定义

      为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类

    2. 特点
      • 抽象工厂是工厂方法模式的升级版本,用来创建一组相关或者相互依赖的对象
      • 工厂方法是针对一个产品等级结构,而抽象工厂则是针对的多个等级结构
      • 工厂方法模式提供的所有产品都是衍生自同一个接口或抽象类,而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类
      • 抽象工厂中产品族概念: 是指位于不同产品等级结构中功能相关联的产品组成的家族
    3. 示例代码
      // 产品1
      interface IProduct1 {
          public void show();
      }
      //产品2
      interface IProduct2 {
          public void show();
      }
      
      class Product1 implements IProduct1 {
          public void show() {
              System.out.println("这是1型产品");
          }
      }
      class Product2 implements IProduct2 {
          public void show() {
              System.out.println("这是2型产品");
          }
      }
      
      //抽象工厂
      interface IFactory {
          public IProduct1 createProduct1();
          public IProduct2 createProduct2();
      }
      class Factory implements IFactory{
          public IProduct1 createProduct1() {
              return new Product1();
          }
          public IProduct2 createProduct2() {
              return new Product2();
          }
      }
      
      public class Client {
          public static void main(String[] args){
              IFactory factory = new Factory();
              factory.createProduct1().show();
              factory.createProduct2().show();
          }
      }
      
    4. 优缺点及适用场景
      • 可以在类的内部对产品族进行约束
      • 产品族或多或少存在一定关联,抽象工厂就可以在类内部对产品族的关联关系进行定义和描述
      • 产品族的扩展比较费劲,所以适用抽象工厂模式时,对产品等级结构的划分是非常重要
      • 需要创建一系列相互关联或相互依赖的产品族时,可以使用抽象工厂模式
      • 无论简单工厂模式,工厂方法模式,抽象工厂模式都属于工厂模式,其主要目的都是为了解耦
      • 使用时,无需关心是何种模式,只需要关心是否能降低耦合度
    5. 引用

    相关文章

      网友评论

          本文标题:抽象工厂模式

          本文链接:https://www.haomeiwen.com/subject/poqqcttx.html