Python策略模式实现源码分享
2016-10-12 17:57
483 查看
1.让一个对象的某个方法可以随时改变,而不用更改对象的代码
2.对于动态类型的Python语言,不需要定义接口
3.基本的实现方法:用类作为参数传递
例如:
12_eg3.py
class Moveable:
def move(self):
print('Move...')
class MoveOnFeet(Moveable):
def move(self):
print("Move on Feet.")
class MoveOnWheel(Moveable):
def move(self):
print("Move on Wheels.")
class MoveObj:
def set_move(self,moveable):
self.moveable = moveable()
def move(self):
self.moveable.move()
class Test:
def move(slef):
print("I'm Fly.")
if __name__ == '__main__':
m = MoveObj()
m.set_move(Moveable)
m.move()
m.set_move(MoveOnFeet)
m.move()
m.set_move(MoveOnWheel)
m.move()
m.set_move(Test)
m.move()
程序的运行结果为:
4.最简的实现方法:函数作为参数来传递
例如:
def movea():
print('Move a.')
def moveb():
print('Move b.')
class MoveObj:
def set_move(self,moveable):
self.moveable = moveable
def move(self):
self.moveable()
if __name__ == '__main__':
m = MoveObj()
m.set_move(movea)
m.move()
m.set_move(moveb)
m.move()
程序的运行结果为:
原文链接:http://www.maiziedu.com/wiki/python/strategy/
2.对于动态类型的Python语言,不需要定义接口
3.基本的实现方法:用类作为参数传递
例如:
12_eg3.py
class Moveable:
def move(self):
print('Move...')
class MoveOnFeet(Moveable):
def move(self):
print("Move on Feet.")
class MoveOnWheel(Moveable):
def move(self):
print("Move on Wheels.")
class MoveObj:
def set_move(self,moveable):
self.moveable = moveable()
def move(self):
self.moveable.move()
class Test:
def move(slef):
print("I'm Fly.")
if __name__ == '__main__':
m = MoveObj()
m.set_move(Moveable)
m.move()
m.set_move(MoveOnFeet)
m.move()
m.set_move(MoveOnWheel)
m.move()
m.set_move(Test)
m.move()
程序的运行结果为:
4.最简的实现方法:函数作为参数来传递
例如:
def movea():
print('Move a.')
def moveb():
print('Move b.')
class MoveObj:
def set_move(self,moveable):
self.moveable = moveable
def move(self):
self.moveable()
if __name__ == '__main__':
m = MoveObj()
m.set_move(movea)
m.move()
m.set_move(moveb)
m.move()
程序的运行结果为:
原文链接:http://www.maiziedu.com/wiki/python/strategy/
相关文章推荐
- 设计模式之策略模式(python实现)
- Python装饰模式实现源码分享
- 设计模式二(策略模式,采用python实现)
- C++源码分享(五):观察者模式泛型实现
- python实现策略模式
- python中如何简单的实现decorator模式--由django admin源码所得体会
- C++源码分享(六):许可者模式泛型实现
- 大话设计模式之Python实现【策略模式】
- 设计模式--策略模式的python实现
- 《 Head First 》学习笔记:策略模式 (python实现)
- Head First 设计模式——策略模式(Strategy Pattern)——Python实现
- python优雅实现策略模式
- 策略模式的实现
- 策略模式与简单工厂的C++实现
- 重构桌面飘着圣诞老人,利用策略模式和改造的代理模式让软件完全实现开闭原则,欢迎下载源代码分析
- Javascript实现图片位置控制(鼠标拖拽 + 键盘方向键移动)源码分享
- 使用 HibernateTemplate 实现分页查询 和其使用的策略模式
- 读书 大话设计模式 第二章 策略模式 C++实现 1-2小节 未完
- AspectJ实现设计模式(二)——策略模式
- Head First 设计模式 C++实现-Strategy(策略模式)