设计模式笔记一(strategy pattern)

正式步入码工界,遇到第一个问题就是Refractor老的project,让支持新的功能和策略。

无路可退,便踏上了学习设计模式的征程~

路漫漫其修远兮....


言归正传,第一个学习的对象是strategy pattern,策略模式。

个人知识有限,于是乎,请教一下Wikipedia,找到其定义如下:

策略模式作为软件设计模式,指对象有某个行为,但在不同场景下,该行为有不同的实现算法。

说起场景,行为,要想当年玩CS,被别人拿小刀爆头的壮烈场景~ 

不过也有好处,刚好可以用来解释策略模式~


玩过CS的人都知道,不管警匪都是拿着武器砍对方或者自残(比如可以用手雷)。在不同的场景下,我们会用小刀或者各种不同的枪。

用不同的武器,攻击方式也不一样,比如拿小刀爆头和那小手枪爆头。


首先我们创建一个IWeapon interface来表示各种不同攻击力:

public interface IWeapon 
    {
        void Use();
    }

对于不同的武器,I.E. 小刀,手枪,我们实现IWeapon的方法~

 public class Knife : IWeapon 
    {
        public void Use() 
        {
            Console.WriteLine("kill with a knife");
        }
    }

    public class Gun : IWeapon 
    {
        public void Use() 
        {
            Console.WriteLine("kill with a gun");
        }
    }

不管警匪,都可以使用不同的武器,所以创建一个CS角色,他/她可以使用不同的武器。

   public class CSCharactor 
    {
        private IWeapon weapon;
        public void SetWeapon(IWeapon wp)
        {
            weapon = wp;
        }
        public void Attack() 
        {
            weapon.Use();
        }
    }


这样在不同的环境下,我们可以自由的切换不同的武器来砍人了~

static void main(strings[] args)
{ 
            IWeapon wp = null;
            CSCharactor ch = new CSCharactor();
            while (true) 
            {
                string input = Console.ReadLine();
                switch (input) 
                {
                    case "1":
                        wp = new Knife();
                        break;
                    default:
                        wp = new Gun();
                        break;
                }
                ch.SetWeapon(wp);
                ch.Attack();
            }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 【2】项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流学习。 【注意】 项目下载解压后,项目名字和项目路径不要用中文,否则可能会出现解析不了的错误,建议解压重命名为英文名字后再运行!有问题私信沟通,祝顺利! 基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值