策略模式 - head first设计模式
来源:互联网 发布:天刀捏脸数据女可爱 编辑:程序博客网 时间:2024/06/10 01:51
策略模式:定义算法组,分别封装,他们之间可以互换,此模式让算法的变化与客户的需求分开。
举个例子,当我们需要一群鸭子,我们就定义这样一个类
class duck{ function quack(){}//鸭子叫 function fly(){}//飞起来了}
当我们需要一个新的种类,继承就好了,但是问题是,有的鸭子不会飞,我们可以把叫跟飞的方法覆盖起来,但是工作量会很大,所以我们有用到接口了
class duck{}interface quack{}interface fly{}
貌似这样就可以了,但是当需求又有变化时,再更改飞行,叫的接口时,很容易就会出问题了。
策略模式就可以派上用场了,我们把会变化的部分全部抽象出来,不在主体类中实现,也就是有一个抽象父类
abstruct class duck{ quackBehivour = null; flyBehivour = null; function quack(){} function fly(){}}
上面的行为用来存储不同的鸭子不同的行为,所以这里还有两个类需要实现
interface quackBehivour{ function quack(){}}interface flyBehivour{ function fly(){}}class mikeQuack implement quackBehivour{}class mikeFly implement flyBehivour{}
所以这样我们就可以实现自己的mike鸭子了
class mikeDuck extend duck{ function __construct(){ quackBehivour = new mikeQuack(); flyBehivour = new mikeFly(); } function quack(){ quackBehivour.quack(); } function fly(){ flyBehivour.fly(); }}这样我们就把变化最多的两个部分飞行,叫这两个部分分离出来了,新的需求来时,我们只需要增加新的类就能完成扩展。
设计原则:
针对接口而不是实现编程
多组合,少继承
- 《head first 设计模式》之策略模式
- head first 设计模式:策略模式
- 策略模式 - head first设计模式
- Head First 设计模式第一章 ----策略模式
- 《Head First设计模式》策略模式
- Head First设计模式-策略模式
- 【Head First设计模式】策略模式
- 《Head First 设计模式》策略模式
- 《Head First设计模式》之策略模式
- Head First 设计模式:1策略模式
- 《Head First 设计模式》之策略模式
- <Head First 设计模式>:策略模式--Duck
- Head First设计模式—策略模式
- 【Head First设计模式-读书笔记】策略模式
- Head First设计模式---策略、观察者模式
- Head First-设计模式:策略模式
- 《Head First设计模式》之策略模式
- 《Head First设计模式》之策略模式
- 彩信技术
- 表单提交数据大小的限制
- Mongodb主要功能特点
- 在IIS6中配置asp.net MVC
- Agile Method
- 策略模式 - head first设计模式
- 写在2012,写给2012
- 2011年理想行动计划回顾
- 设计模式在C语言中的应用--读nginx源码
- PHP中根据汉字返回拼音
- Discover the secrets of the Java Serialization API
- JSON数据格式必知
- Discover the secrets of the Java Serialization API
- android wifi测试小程序