Python设计模式系列之四: 创建型Abstract Factory模式
2007-03-30 12:56:31 来源:WEB开发网本文示例源代码或素材下载
软件设计大师总是要比初学者更加清楚该如何设计软件,因为他们手中掌握着设计模式这一法宝。作为一种高级的软件复用形式,设计模式是众多优秀软件设计师集体智慧的结晶,能够很好地指导软件设计过程。本系列文章讲述如何在用Python开发软件时应用各种设计模式,此次介绍的是创建型工厂方法(Factory Method)模式。
一、简介
抽象工厂(Abstract Factory)模式又称为Kit模式,属于对象创建型模式,它拥有比简单工厂模式和工厂方法模式更高的抽象性,是所有工厂模式中最为抽象和最具一般性的形态。抽象工厂模式是一种重要的架构型组件(Architectural Component),它负责提供统一的接口,用来生成一簇"相互关联"或者"相互依赖"的多态对象(Polymorphic Object)。
考虑一个具有多种风格(Theme)的GUI工具包,它能够同时支持KDE和GNOME等类型的桌面环境,不同的桌面风格负责为诸如按钮、文本框和滚动条这样的窗口控件(Widget)定义不同的外观和行为。很显然,应用程序不应该针对某种特定的桌面风格硬编码它的窗口控件,否则之后如果需要使用另外一种桌面风格就必须对源代码进行修改,或者换句话说,在应用程序中实例化特定桌面风格的窗口控件将使得今后很难再对应用程序的桌面风格进行更改。解决的办法是首先定义一个抽象的WidgetFactory类,它负责声明用于创建每一类窗口控件的公共接口,然后再为每一类窗口控件定义一个共同的抽象父类,并且使用与之对应的具体子类来实现特定风格的窗口控件。对于每一个抽象的窗口控件类,WidgetFactory都提供一个返回相应对象的方法,这样应用程序就可以通过调用这些方法来获得窗口控件的实例,而不用关心当前正在使用的是哪些具体类,从而也就可以不再依赖于某种具体的桌面风格了,整个GUI工具包的系统结构如图1所示。
赞助商链接