AbstractFactory(抽象工厂)

AbstractFactory(抽象工厂),第1张

AbstractFactory(抽象工厂),第2张

ABSTRACT FACTORY)(抽象工厂)——对象创建型模式提供一个创建一系列相关或相互依赖的接口,而无需指定它们具体的类

  参与者:
  l AbstractFactory

  声明一个创建抽象产品对象的操作接口

  l ConcreteFactory

  实现创建具体产品对象的操作,一个ConcreteFactory实例对应同一系列产品的创建

  l AbstractProduct

  为一类产品对象声明一个接口

  l ConcreteProduct

  定义一个将被相应的具体工厂创建的产品对象,实现AbstractProduct接口

  l Client

  仅使用由AbstractFactory和AbstractProduct类声明的接口。

  效果:

  1) 分离了具体的类

  一个工厂封装创建产品对象的责任和过程,它将可以与类的实现分离。客户通过抽象接口操纵实例。

  2) 使得易于交换产品系列

  一个具体工厂类在一个应用中仅出现一次(初始化时),当需要改变产品系列时代码改动量很少。

  3) 有利于产品的一致性

  一个应用一次只能使用同一个系列中的的产品,AbstractFactory很容易实现。

  4) 缺点:难以扩展抽象工厂以生产新种类的产品。每一种产品对应与工厂的一个接口,增加新种类的产品就需要扩展工厂接口,这将涉及AbstractFactory类及其所有子类的改变。

  实现:

  1) 将工厂作为单件。一个应用中一般每个产品系列只需一个ConcreteFactory实例,可以运用Singleton模式。

  2) AbstractFactory仅声明一个创建产品的接口,真正创建产品是由ConcreteProduct子类实现的。最通常的一个办法是为每一个产品定义一个工厂方法(Factory Method)

  3)定义可扩展工厂,AbstractFactory通常为每一种它可以生产的产品定义一个操作,增加新的产品不方便。一种灵活但不安全的设计是给创建对象的操作增加一个参数。那么AbstractFactory只需要一个Make操作和一个指示要创建对象的种类的参数。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » AbstractFactory(抽象工厂)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情