Python设计模式系列之四: 创建型Abstract Factory模式
2007-03-30 12:56:31 来源:WEB开发网核心提示: 图1每一种桌面风格都对应于WidgetFactory的一个具体子类,它们负责实现在WidgetFactory中定义的用来创建相应窗口控件的方法,Python设计模式系列之四: 创建型Abstract Factory模式(2),例如,调用KDEWidgetFactory中的createBut
图1
每一种桌面风格都对应于WidgetFactory的一个具体子类,它们负责实现在WidgetFactory中定义的用来创建相应窗口控件的方法。例如,调用KDEWidgetFactory中的createButton()方法可以创建一个KDE桌面环境下的按钮,而调用GNOMEWidgetFactory中的createButton()方法则可以创建一个GNOME桌面环境下的按钮。此处的WidgetFactory就是一个抽象工厂,它使得应用程序只需通过在WidgetFactory中定义的接口就可以得到相应的窗口控件,而不用关心整个GUI软件包中究竟是哪些类实现了特定风格的窗口控件。运用抽象工厂模式的好处是客户端可以完全独立于产品的创建过程,只要与抽象工厂类中定义的公共接口进行交互就可以了,而无需对具体的产品类进行实例化操作。
抽象工厂模式与工厂方法模式最大的区别在于:工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则针对的是多个产品等级结构。正因如此,在抽象工厂模式中经常会用到产品族(Product Family)这一概念,它指的是位于不同的产品等级结构中,并且功能相互关联的产品系列。图2中箭头所指的就是三个功能相互关联的产品,它们位于三个不同的产品等级结构中的相同位置上,共同组成了一个产品族。
图2
不难看出,如果使用抽象工厂模式,那么仅需要一个工厂等级结构就可以创建出分属于不同产品等级结构的产品族中的所有对象,因此抽象工厂模式同工厂方法模式相比效率更高。抽象工厂这一模式适合在如下场合中运用:
当软件系统要求独立于产品的创建、组合和表示的时候,其实这对任何形态的工厂模式来讲这都是很重要的。
更多精彩
赞助商链接