Head First 设计模式——策略模式(Strategy Pattern)——Python实现
来源:互联网 发布:禾米网络支付 编辑:程序博客网 时间:2024/06/05 15:53
本作品采用知识共享署名-非商业性使用-相同方式共享 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
执行结果
- Head First 设计模式——策略模式(Strategy Pattern)——Python实现
- Head First 设计模式——策略模式(Strategy Pattern)
- Head-first设计模式(一)——策略模式(Strategy Pattern)
- Head First 设计模式之策略模式(Strategy Pattern)
- Head First-策略模式(Strategy Pattern)
- Head First 设计模式 (一) 策略模式(strategy pattern) C++实现
- Head First设计模式—策略模式
- Head First 设计模式—Python实现
- 设计模式 —— 策略模式(Strategy Pattern)
- Java设计模式——策略模式(Strategy Pattern)
- 设计模式——策略模式(Strategy Pattern)
- Java设计模式——策略模式(Strategy Pattern)
- 设计模式—策略模式(Strategy Pattern)
- Head First 设计模式——装饰器(Decorator Pattern)——Python实现
- head first设计模式(一)——策略模式
- Head First 设计模式——观察者模式(Observer Pattern)——Python实现(1)
- Head First 设计模式——观察者模式(Observer Pattern)——Python实现(2)
- Head First 设计模式——观察者模式(Observer Pattern)——Python实现(3)
- Windows 下java调用C++ dll动态链接库
- pbmi = (BITMAPINFO*)(pbmfh + 1); 这行代码终于懂了
- 读取位图的类
- SecurityError: Error #2148: SWF 文件 (SWF 文件不能访问本地资源)
- 【转】临终病人最常后悔的五件事
- Head First 设计模式——策略模式(Strategy Pattern)——Python实现
- TIOBE发布了2011年6月份的编程语言排行榜
- 新闻发布系统阶段小结
- 内联函数断点超限解析
- android笔记一
- ExtJs 自定义Vtype验证
- Struts2的工作原理
- c# treeview控件动态绑定数据库,实现2级目录,当输入同一父节点的子节点时,在相同父节点下添加子节点.txt
- 谁把数据中间加了 回车符。。害死爷了。。。