`
isiqi
  • 浏览: 16001886 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Head First 设计模式——策略模式(Strategy Pattern)——Python实现

阅读更多

本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议进行许可。允许非商业转载,但应注明作者及出处。


作者:liuyuan_jq

2011-06-13



策略模式定义

定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。


问题

J o e 上班的公司做了一套相当成功的模拟鸭子游戏: SimUDuck。游戏中会出现各种鸭子,一边游泳戏水,一边呱 呱叫。此系统的内部设计使用了标准的OO技术,设计了一个鸭 子超类(Superclass),并让各种鸭子继承此超类。


设计原则

  • 找出应用中可能需要变化之处,把它 们独立出来,不要和那些不需要变化 的代码混在一起。
  • 针对接口编程,而不是针对实现编程
  • 多用组合,少用继承

设计鸭子的行为

我们知道Duck类内的fly()和quack()会随着鸭子的不同而改变。为了要把这两个行为从Duck类中分开,我们将把它们从Duck类 中取出来,建立一组新类来代表每个行为。这样,鸭子类就不再需要知道行为的实现细节。


设计鸭子的飞行行为


设计鸭子的叫行为


实现源码

flyBehavior.py


quackBehavior.py

duck.py


执行结果


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics