0%

1.2 Abstract Factory

  • 意图: 某个接口–提供创建 一系列相关或相互依赖的对象 的接口,而无需指定这些对象的类

  • 解释: 这种接口 也可以说将创建一系列对象的行为 交由子类实现。这个视角看,抽象工厂是 提供 多个 工厂方法的接口

    这种设计模式简单的理解为 多个 工厂方法的集合就好

实例

考虑一个支持多种视感(look-and-feel)标准的用户易界面工具包,例如 Motif 和 PresentationManager。不同的视感风格为诸如滚动条、窗口和按钮等用户界面“窗口组件“定义不同的外观和行为。为保证视感风格标准间的可移植性,一个应用不应该为一个特定的视感外观硬编码它的窗口组件。在整个应用中实例化特定视感风格的窗口组件类将使得以后很难改变视感风格。

每一种视感标准都对应于一个具体的 WidgetFactory 子类。每一子类实现那些用于创建合适视感风格的窗口组件的操作。例如,MotifWidgetFactory 的 CreateScrollBar 操作实例化并返回一个 Motif 滚动条,而相应的 PMWidgetFactory 操作返回一个 Presentation Manager 的滚动条。客户仅通过 WidgetFactory 接口创建窗口组件,他们并不知道哪些类实现了特定视感风格的窗口组件。换言之,客户仅与抽象类定义的接口交互,而不使用特定的具体类的接口。