WEB开发网
开发学院软件开发Python Python设计模式系列之四: 创建型Abstract Factory... 阅读

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

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:Python 设计模式 系列

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接