美文网首页
抽象工厂模式

抽象工厂模式

作者: 不鸟万峰 | 来源:发表于2016-08-18 01:30 被阅读12次

抽象工厂模式的目的

创建对像,在工厂方法模式中,一个工厂只生产一种对象,当产品对象过多时,会产生比较多的工厂类.而且实际生产中,一个工厂也不仅仅生产一种产品,而是生产一类产品,比如一个家电厂,可能会生产电视,洗衣机,电冰箱等产品.在抽象工厂模式中,一个工厂可以生产多种产品对象.

抽象工厂方法概述

负责对象创建,一个工厂可以生产多个对象,提供一个创建一系列相关或相互依赖的接口,无需指定具体接口.

要点

  • 产品等级结构,产品的继承结构.比如汽车,汽车是一个抽象类,.而宝马,奔驰,兰博基尼则是具体的汽车品牌.抽象汽车和具体的汽车品牌构成了一个产品等级结构.抽象汽车是父类,具体汽车品牌是子类.
  • 产品族,同一个工厂生产的不同产品.比如IPhone,IPad,Mac 是苹果的不同产品,它们是是一个产品族.
  • 工厂生产多个不同的具体产品,可以一个产品族的所有对象.
  • AbstractFactory 抽象工厂.声明创建产品族的方法,每一个方法对应一种产品.
  • ConcreteFactory 具体工厂,实现抽象工厂中创建产品的方法,生产具体产品,这些产品构成一个产品族.
  • AbstractProduct 抽象产品 ,为产品声明接口,定义产品所有具有的方法.
  • Product 具体产品.工厂生产的具体产品,实现产品中声明的方法.

实现

  • 抽象工厂,声明创建产品族的方法,可以是接口,抽象类以及具体类.
public interface AbstractFactory{
  AbstractProductA createProductA();//工厂方法A 
  AbstractProductB createProductB();//工厂方法B 
}
  • 具体工厂,每个具体的工厂方法生产具体的对象,一组具体工厂方法生产一个产品族.
public class Factory1 implements  AbstractFactory{
  public AbstractProductA createProductA(){
    return new ProductA1();
  }

  public AbstractProductB createProductB(){
    return new ProductB1();
  }
}

抽象工厂模式的使用场景

  • 一个系统中,产品类实例的创建,组合和表达等不影响系统,用户不关心产品的创建过程.
  • 系统中有多个产品族,但是每次只使用其中某个一个产品族.
  • 属于同一个产品族的产品在一起使用
  • 系统提供产品类的库,所有的产品有相同的接口,产品等级结构稳定,设计内完成后,不会改变产品等级结构.

相关文章

网友评论

      本文标题:抽象工厂模式

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