抽象工厂模式

抽象工厂模式的目的

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

抽象工厂方法概述

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

要点

  • 产品等级结构,产品的继承结构.比如汽车,汽车是一个抽象类,.而宝马,奔驰,兰博基尼则是具体的汽车品牌.抽象汽车和具体的汽车品牌构成了一个产品等级结构.抽象汽车是父类,具体汽车品牌是子类.
  • 产品族,同一个工厂生产的不同产品.比如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();
  }
}

抽象工厂模式的使用场景

  • 一个系统中,产品类实例的创建,组合和表达等不影响系统,用户不关心产品的创建过程.
  • 系统中有多个产品族,但是每次只使用其中某个一个产品族.
  • 属于同一个产品族的产品在一起使用
  • 系统提供产品类的库,所有的产品有相同的接口,产品等级结构稳定,设计内完成后,不会改变产品等级结构.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容