抽象工厂模式

1.抽象工厂模式概述:

  抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型情况下,能够创建多个产品族的产品对象。

2.抽象工厂模式包含的角色及其职责:

  抽象工厂:抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。

     具体工厂:具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。

     抽象产品: 抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

     具体产品:抽象模式所创建的具体实例对象

总结
    抽象工厂中方法对应产品结构(苹果,橙子),具体工厂对应产品族(纽约风味,德国风味)。

抽象工厂模式缺点
    在添加新的产品对象时,难以扩展抽象工厂来生产新种类的产品,
    这是因为在抽象工厂角色中规定了所有可能被创建的产品集合,要支持新种类的产品就意味着要对该接口进行扩展,而这将涉及到对抽象工厂角色及其所有子类的修改,显然会带来较大的不便。
    开闭原则的倾斜性。
    (1) 增加产品族:对于增加新的产品族,抽象工厂模式很好地支持了“开闭原则”,只需要增加具体产品并对应增加一个新的具体工厂,对已有代码无须做任何修改。
    (2) 增加新的产品等级结构:对于增加新的产品等级结构,需要修改所有的工厂角色,包括抽象工厂类,在所有的工厂类中都需要增加生产新产品的方法,违背了“开闭原则”。

原文地址:https://www.cnblogs.com/lzghyh/p/12587101.html