策略模式(Strategy Pattern)
2015-09-20 22:38
239 查看
策略模式(Strategy Pattern):定义算法簇,分别封闭起来,不同算法簇之间可以替换。
遵循的原则:
1、封闭变化
2、多用组合,少用继承
3、针对接口编程,而非实现编程
eg:
角色型游戏,一般一个角色一次使用一个武器,可以换武器。实现角色与使用武器间关系。
遵循的原则:
1、封闭变化
2、多用组合,少用继承
3、针对接口编程,而非实现编程
eg:
角色型游戏,一般一个角色一次使用一个武器,可以换武器。实现角色与使用武器间关系。
<span style="font-size:18px;">// 角色基类 Class Charactor { public: void fight() { weapon.useWeapon(); } void SetWeapon(WeaponBehavior w) { weapon = w; } void SetWeaponType(int eType) { eWeaponType = eType; } private: WeaponBehavior weapon; int eWeaponType; }; // 角色A Class CharactorA : public Charactor { public: CharactorA() : Charactor() { SetWeapon(GetWeaponBehavior(eType)); } ... }; </span><pre name="code" class="cpp"><span style="font-size:18px;">// 角色B Class CharactorB : public Charactor { public: CharactorA() : Charactor() { SetWeapon(GetWeaponBehavior(eType)); } ... };</span>
// 获取武器接口 WeaponBehavior GetWeaponBehavior(int eType){ switch (eType) { .... } } // 武器基类 Class WeaponBehavior { public:void useWeapon(); ... };
<span style="font-size:18px;">// 武器类A Class WeaponBehaviorA : public WeaponBehavior { public: void useWeapon() { //使用武器A } ... }; </span><pre name="code" class="cpp"><pre name="code" class="cpp"><span style="font-size:18px;">// 武器类A Class WeaponBehaviorB : public WeaponBehavior { public: void useWeapon() { //使用武器B } ... };</span>
相关文章推荐
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- PHP设计模式之装饰者模式代码实例
- php设计模式之单例模式实例分析
- 介绍php设计模式中的工厂模式
- PHP设计模式之适配器模式代码实例
- 深入浅出23种设计模式
- 浅谈c#设计模式之单一原则
- C#设计模式之观察者模式实例讲解
- C#设计模式之单例模式实例讲解
- 深入理解JavaScript系列(28):设计模式之工厂模式详解
- 面向对象设计模式的核心法则
- JavaScript设计模式之单件模式介绍
- 深入理解JavaScript系列(25):设计模式之单例模式详解
- JavaScript设计模式之外观模式实例