本作品采用知识共享署名-非商业性使用-相同方式共享 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
执行结果
分享到:
相关推荐
笔记_HeadFirst设计模式
Head First 设计模式Head First 设计模式Head First 设计模式Head First 设计模式Head First 设计模式Head First 设计模式Head First 设计模式Head First 设计模式Head First 设计模式Head First 设计模式Head First...
Head First设计模式(完整高清版).pdf,涵盖了各种宝贵的设计思想!
经典的设计模式书籍打包:Head First 设计模式 +Java设计模式(第2版)
head first 设计模式 高清中文版 pdf
Head First设计模式高清非扫描中文版.zip.002。一共三个压缩包,都上传了
如果你曾经读过任何一本深入浅出(Head First)系列书籍,你就会知道能够从本书中得到的是:透过丰富的视觉效果让你的大脑充分地运作。本书的编写运用许多最新的研究,包括神经生物学、认知科学以及学习理论,这使得...
head first 设计模式 策略模式 C++ 代码
策略模式: 定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 The Strategy Pattern defines a family of algorithms, encapsulates each one, and makes ...
NULL 博文链接:https://jacky-dai.iteye.com/blog/1132058
Head First设计模式中文版 Head First设计模式中文版 Head First设计模式中文版
Head First设计模式 c++代码实现
Head First 设计模式 (六) 命令模式(Command pattern) C++实现
head first设计模式 下载地址 head first设计模式 下载地址 head first设计模式 下载地址 head first设计模式 下载地址 head first设计模式 下载地址
Head First设计模式, 中国电力出版社出版,英文书名:Head First Design Patterns。作者:弗里曼。《Head First设计模式》荣获2005年第十五届Jolt通用类图书震撼大奖。英文影印版被《程序员》等机构评选为2006年受...
Head First设计模式 Head First设计模式 Head First设计模式
[中文]Head-First设计模式.pdf.
重视大脑的学习指南Head First设计模式,学习为何朋友们对工厂模式的认知可能有错,把事关紧要的模式直接装入脑海里,发掘模式大师的秘密,避免一些尴尬的错误,探究星巴兹咖啡如何以装饰者模式让自己的股价翻倍。
Head First 设计模式 (四) 工厂模式(factory pattern) C++实现
支持开源! 这么经典的书,不必介绍了吧。 注意:由于分包压缩的7z格式,所以需要把15个包全部下载后在进行解压缩(使用7z软件)