设计模式之策略模式
2011-08-26 22:57
204 查看
策略模式是指对象有某个行为,但是在不同的场景中,该行为有不同 的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。或者在设计FPS游戏中,武器都有开火的行为,武器不同,其行为的算法都会不一样。
看下面代码:
这种基于“组合”的设计模式,在灵活度上要优于继承的方式,我们在开发过程中为了让写的应用程序更容易扩展,应多用组合少用继承。
看下面代码:
/// <summary> /// 武器行为 /// </summary> public interface IWeaponBehavior { //开火 void Fire(); } /// <summary> /// (手_枪) /// </summary> public class Gun : IWeaponBehavior { #region IWeaponBehavior 成员 //手_枪开火 public void Fire() { Console.WriteLine("手_枪开火!"); } #endregion } /// <summary> /// 大炮 /// </summary> public class Cannon : IWeaponBehavior { #region IWeaponBehavior 成员 //大炮开火 public void Fire() { Console.WriteLine("大炮开火!"); } #endregion } /// <summary> /// 游戏者 /// </summary> public class Gamer { //武器行为 IWeaponBehavior _Weapon; public IWeaponBehavior Weapon { get { return this._Weapon; } set { this._Weapon = value; } } public Gamer() { } //开火 public void Fire() { this._Weapon.Fire(); } } class Program { /// <summary> /// 调用 /// </summary> /// <param name="args"></param> static void Main(string[] args) { IWeaponBehavior gun = new Gun();//实例化手_枪 IWeaponBehavior cannon = new Cannon();//实例化大炮 Gamer gamer = new Gamer();//实例化游戏者 gamer.Weapon = gun;//武器换到手_枪 gamer.Fire();//开火 gamer.Weapon = cannon;//武器换到大炮 gamer.Fire();//开火 } }
这种基于“组合”的设计模式,在灵活度上要优于继承的方式,我们在开发过程中为了让写的应用程序更容易扩展,应多用组合少用继承。
相关文章推荐
- c++设计模式--策略模式
- Java设计模式透析之 —— 策略(Strategy)
- 再次回顾设计模式——策略模式
- php 设计模式-策略模式
- 从“假如有以下几种价格10,20,50,请你代码实现将他们排序输出”看设计模式中的策略模式
- opencv02-策略模式设计
- JAVA--策略模式(strategy)--设计模式十三
- JAVA设计模式-策略模式应用实例
- JAVA设计模式-策略模式应用实例
- 设计模式--策略模式
- 设计模式之策略模式
- 设计模式 状态模式 策略模式 观察者模式 命令模式 中介者模式
- 设计模式_02 策略模式
- Java设计模式-策略设计模式
- Java设计模式透析之 —— 策略(Strategy)
- java 设计模式 策略模式,comparable 接口,compareTo 方法
- 设计模式(十八)之 Strategy(策略)
- Java设计模式之策略模式与状态模式
- 设计模式实战(一)——使用策略模式(strategy pattern)实现多关键字排序
- (学习笔记)设计模式之策略模式