美文网首页
抽象工厂模式

抽象工厂模式

作者: 不鸟万峰 | 来源:发表于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