Python设计模式系列之四: 创建型Abstract Factory模式
2007-03-30 12:56:31 来源:WEB开发网核心提示: 为了保证这种一致性,程序员在编码时必须非常小心,Python设计模式系列之四: 创建型Abstract Factory模式(4),否则稍有疏忽,那些正在痛击SillySoldier的游戏菜鸟们一转身撞上一个WiseMonster,代码清单1:abstractenemyfactory.pyc
为了保证这种一致性,程序员在编码时必须非常小心,否则稍有疏忽,那些正在痛击SillySoldier的游戏菜鸟们一转身撞上一个WiseMonster,肯定会败得一塌糊涂。抽象工厂模式可以很好地解决这一问题,在具体实现时可以先将游戏中所有Soldier和Monster对象的生成函数集中到一个抽象工厂AbstractEnemyFactory中,然后再根据不同的难度级别依次构造SillyEnemyFactory和WiseEnemyFactory两个具体工厂,并由它们负责按照当前游戏策略的要求去生成具体的士兵和怪兽。这样一来,整个游戏的体系结构就将如图3所示。
图3
AbstractEnemyFactory 是一个抽象工厂,它负责声明被所有具体工厂所共有的构造性方法,其完整的代码如清单1所示。在AbstractEnemyFactory中定义的createSoldier()和createMonster()是两个抽象方法,它们必须在所有的具体工厂中给出相应的实现,这样客户端才有可能通过调用具体工厂中的这两个方法,来获得所需要的某种Soldier或者Monster对象。
代码清单1:abstractenemyfactory.py
class AbstractEnemyFactory:
""" 负责创建Soldier和Monster的抽象工厂 """
# 创建Soldier的抽象方法
def createSoldier(self):
pass
# 创建Monster的抽象方法
def createMonster(self):
pass
SillyEnemyFactory 是 AbstractEnemyFactory 的一个具体实现,它负责实例化 SillySoldier 和 SillyMonster 对象,其完整的代码如清单2所示。
代码清单2:sillyenemyfactory.py
from sillysoldier import *
from sillymonster import *
from abstractenemyfactory import *
class SillyEnemyFactory(AbstractEnemyFactory):
""" 负责创建SillySoldier和SillyMonster的具体工厂 """
# 创建SillySoldier的具体方法
def createSoldier(self):
soldier = SillySoldier()
return soldier
# 创建SillyMonster的具体方法
def createMonster(self):
monster = SillyMonster()
return monster
更多精彩
赞助商链接