设计模式笔记一(strategy pattern)

本文通过CS游戏场景引入策略模式的概念,详细解析如何利用接口和类实现不同武器攻击行为的切换,深入浅出地阐述了策略模式在软件设计中的应用与优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正式步入码工界,遇到第一个问题就是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();
            }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值