Head First 之策略模式笔记
来源:互联网 发布:淘宝零食店加盟 编辑:程序博客网 时间:2024/04/26 00:32
通过继承在父类中提供行为,会导致以下缺点:
a. 代码在多个子类中重复;
b. 运行时的行为不容易改变;
c. 改变会牵一发动全身,造成部分子类型不想要的改变;
策略模式(Strategy Pattern)体现了两个非常基本的面向对象设计的原则:
1、把会变化的内容取出并封装起来,以便以后可以轻易地改动或扩充部分,而不影响不需要变化的其他部分,而不变的部分采用继承来实现;
2、编程中使用接口,而不是对接口的实现。
策略模式定义了一个共同的抽象算法接口,其子类实现这个接口定义的方法,并且都有各自不同的实现,这些算法实现可以在客户端调用它们的时候互不影响的变化。 子算法之间是弱连接的关系,提高了软件的可扩展性与可重用性。
策略模式组成
1、抽象策略角色:策略类,通常由一个接口或者抽象类实现
2、具体策略角色:包括了相关的算法和行为,可能不止一个具体策略角色
3、环境角色:持有一个策略类的引用,最终给客户端调用的。
策略模式编写步骤
1、对一组算法抽象出一个共同接口,定义这个共同接口
2、编写策略类,实现这个借口,每个策略类都有其独特的实现
3、编写环境角色类,类中持有一个对共同接口的引用,对策略对象注入如set方法和get方法或者用构造方法完成赋值
以上就是策略模式的实现三步曲。接下来,让我们透过步骤看本质:
1) 初始,我们通过继承实现行为的重用,导致了代码的维护问题。 -> 继承, is a
2) 接着,我们将行为剥离成单独的类型并声明为不变内容的实例变量并通过 -> 组合, has a
setter方法以装配关系;
继承,可以实现静态代码的复用;组合,可以实现代码的弹性维护;使用组合代替继承,可以使代码更好地适应软件开发完后的需求变化。
策略模式的本质:少用继承,多用组合
下面就是实现的类图:
源码下载地址:http://download.csdn.net/detail/zshq280017423/4542954
- Head First 之策略模式笔记
- Head First 之 策略模式
- Head First设计模式笔记之策略模式
- 《Head First设计模式》学习笔记之策略模式
- 《head first 设计模式》之策略模式
- 《Head First设计模式》之策略模式
- 《Head First 设计模式》之策略模式
- 《Head First设计模式》之策略模式
- 《Head First设计模式》之策略模式
- 《Head First 设计模式》之策略模式
- Head first笔记一:策略模式
- Head First---策略模式
- Head First 策略模式
- Head First 策略模式
- java设计模式-Head First设计模式之策略模式
- Head First 设计模式(1)- 策略模式 笔记
- [学习笔记]Head First 设计模式 - 策略模式(Strategy)
- Head First 设计模式学习笔记 ——策略模式
- 采用JSCH实现对linux远程操作(SSH协议),实现在远程linux机器上执行相关的命令
- fedora14 安装配置samba服务器
- 数据库设计技巧
- C02:程序设计基础提高班(C++)
- ETW是什么架构|Event Tracing for Windows
- Head First 之策略模式笔记
- TC SRM 554
- opencv 图像阴影检测
- 托盘程序导致无法注销或关机
- (七)数据的向导:指针
- OpenGL-光照模型
- head first 设计模式总结(一)策略模式
- CUDA程序开发
- OpenGL-绘制管线