设计模式笔记一(strategy pattern)

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

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



内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值