抽象工厂模式

来源:互联网 发布:重生之娱乐网络帝国 编辑:程序博客网 时间:2024/06/03 08:14

抽象工厂模式总结

首先,我们先来了解一下产品等级结构和产品族的概念。
产品等级结构:产品等级结构即产品的继承结构。例如,一个抽象类是电视机,其子类有小米电视机,乐视电视机,海尔电视机等等,则这些子类电视机与其抽象类构成了一个产品等级结构。
产品族:抽象工厂模式下,产品族指由同一个产品工厂生产,位于不同产品等级结构的一组产品。例如,海尔电器工厂生产海尔洗衣机,海尔电视机,海尔电冰箱,则海尔电器工厂就扮演产品族的角色。其生产的产品位于不同的产品等级结构中。

1、意图
工厂方法模式中,主要是针对产品等级结构,这样在生产一个新产品时,就要在系统中增加大量的工厂类。抽象工厂模式则针对产品族,减少了大量工厂类的出现。

2、解决什么样的问题
解决在工厂方法模式中,每个工厂只生产一类产品,造成系统中存在大量的工厂类。

3、如何解决问题
提供一个创建一系列相关或相互以来对象的接口,无须指定他们具体的类。实现针对产品族编程,减少系统中大量的工厂类。

4、结构图
这里写图片描述

5、关键代码
抽象工厂接口:

//抽象工厂public abstractFactory(){    public AbstractProductA createProductA();    public AbstractProductB createProductB();}

具体工厂:

//具体工厂1class ConcreateFactory1 extends AbstractFactory{    public AbstractProductA createProductA(){        return new ConcreteProductA1();    }    public AbstractProductB createProductB(){        return new ConcreteProductB1();    }}
//具体工厂2class ConcreateFactory2 extends AbstractFactory{    public AbstractProductA createProductA(){        return new ConcreteProductA2();    }    public AbstractProductB createProductB(){        return new ConcreteProductB2();    }}

6、适用场景
系统中有多于一个的产品族,而每次只使用其中一个产品族。

抽象工厂模式的优缺点
优:1、隔离了具体类的生成,使客户不需要知道什么被创建。
2、增加新的产品族很方便,无须更改已有系统,符合开闭原则。

缺:增加新的产品等级结构麻烦。

0 0