博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之策略模式
阅读量:7203 次
发布时间:2019-06-29

本文共 1273 字,大约阅读时间需要 4 分钟。

策略模式是指对象有某个行为,但是在不同的场景中,该行为有不同 的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。或者在设计FPS游戏中,武器都有开火的行为,武器不同,其行为的算法都会不一样。

看下面代码:

/// /// 武器行为/// public interface IWeaponBehavior{    //开火    void Fire();} /// /// (手_枪)/// public class Gun : IWeaponBehavior{    #region IWeaponBehavior 成员    //手_枪开火    public void Fire()    {        Console.WriteLine("手_枪开火!");    }     #endregion} /// /// 大炮/// public class Cannon : IWeaponBehavior{    #region IWeaponBehavior 成员    //大炮开火    public void Fire()    {        Console.WriteLine("大炮开火!");    }     #endregion} /// /// 游戏者/// 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{    ///     /// 调用    ///     ///     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();//开火    }}

这种基于“组合”的设计模式,在灵活度上要优于继承的方式,我们在开发过程中为了让写的应用程序更容易扩展,应多用组合少用继承。

转载地址:http://typum.baihongyu.com/

你可能感兴趣的文章
列表与元组的区别
查看>>
关于野指针、空指针
查看>>
key_buffer_size设置注意事项
查看>>
C#对各种文件的操作-ini(2)
查看>>
JavaScript入门学习笔记(二)
查看>>
Project Euler 13 Large sum
查看>>
自动工作量资料档案库(AWR)报告的获得
查看>>
virtualBox中的centOS虚拟机硬盘扩容
查看>>
Android应用目录结构分析
查看>>
动画总结(UIView的动画)
查看>>
顶点着色器和片断着色器
查看>>
vc++实现禁用按钮
查看>>
flask with gae开发小结
查看>>
以打字形式展示placeholder的插件
查看>>
http文件导出写文件
查看>>
Globus的简单介绍
查看>>
[LeetCode] Search Insert Position 解题报告
查看>>
c# 的传递参数值传递与传递引用的区别,ref与out区别
查看>>
win7+vs2008+cuda5.x 环境配置二
查看>>
PHP5.5安装PHPRedis扩展
查看>>