设计模式-Strategy 模式
1. 解决的问题:
假如现在要编写一个射击类小游戏, 游戏里面有不同级别的游戏角色, 这些角色可以使用不同的武器.
2. 问题分析:
角色应该可以动态的更换武器, 今后可能增加其他的角色或者其他种类的武器.
根据"将可变的部分分离出来,单独封装"的原则, 需要将武器从角色中分离出来, 单独封装.
3. UML图:
![](http://hi.csdn.net/attachment/201004/3/1100208_12702706128pU4.gif)
4. 代码实现:
5. 总结:
1. Strategy 模式定义:
定义一系列的算法,把他们一个个封装起来,并且使它们可相互替换。Strategy模式使算法可独立于使用它的客户而变化。
2. 体现的设计原则:
- 将可变部分分离出来单独封装;
- 多使用组合,少使用继承;
- 面向接口编程,而不面向实现编程;
3. UML图:
![](http://hi.csdn.net/attachment/201004/3/1100208_12702705989Qjn.gif)
4. 要点:
- Strategy 基类需要定义出可供Client使用的一些算法接口;
- 可以随时根据需要增加 Strategy 而不会影响到Client;
- Client 里面需要包含对 Strategy 的引用;
- Client 可以随时更换 Strategy;
6. 理解:
- 继承的作用有两个:
->代码复用;
->让不同的东西可以具有同种类型; - 面向接口编程,是指面向基类编程, 利用基类提供的接口编程而不是利用继承下来的那些具体的子类编程;