抽象工厂模式

2015-08-24  本文已影响58人  ting723
  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. 引用
上一篇 下一篇

猜你喜欢

热点阅读