Python 设计模式系列之二: 创建型 Simple Factory 模式
2007-03-30 12:55:53 来源:WEB开发网核心提示: 在应用简单工厂模式时,可以采用下面的示例性Python代码:fac = Creator()p = fac.factory()if p != None:p.interface()在这个简单的示意性实现里,Python 设计模式系列之二: 创建型 Simple Factory 模式(7),充当
在应用简单工厂模式时,可以采用下面的示例性Python代码:
fac = Creator()
p = fac.factory()
if p != None:
p.interface()
在这个简单的示意性实现里,充当具体产品角色的类只有一个,但在真正的实际应用中,通常遇到的都是同时有多个具体产品类的情况。
四、实际运用
在运用简单工厂模式开发真正的软件系统时,抽象产品和具体产品之间可能会形成非常复杂的树状结构,如图4所示。
图4
虽然这样的结构并不符合所有具体产品类都继承于同一抽象产品类的基本原则,但也不难发现其实所有的具体产品类归根结底都源自于同一个抽象产口类,遇到这种情况时只需稍加变通,依然能够使用同一个工厂类来创建所有具体产品类的实例,只不过此时的软件结构将如图5所示。
图5
当抽象产品类和具体产品类的关系变得复杂起来时,使用简单工厂模式的一个好处就是各种产品类之间的结构关系不会反映到工厂类中,并且它们结构上的变化也不会影响到工厂类。正是因为简单工厂模式对各种具体产品类者是单独对待的,因此工厂类并不需要弄清楚它们之间的结构关系,而只需知道究竟有哪些具体产品类可以被实例化以及如何实例化就可以了。不过这样做有时也会产生一些麻烦,那就是在增加新的具体产品类时,不可避免地会导致对工厂类的修改。
如果在实际中运用简单工厂模式时遇到只有一个具体产品类的情况,为了简化软件体系结构,可以考虑对简单工厂模式进行精简,省略抽象产品这一角色。此时简单工厂模式的结构将如图6所示。
更多精彩
赞助商链接