美文网首页测试整理软件测试程序员
11种行为设计模式之策略模式

11种行为设计模式之策略模式

作者: 麻辣烫里面放麻花 | 来源:发表于2018-03-21 22:31 被阅读162次

    author=jolting

    date='2018-03-21'

    在开始正文之前还是看一下美景,神清气爽下吧

    本是欣赏樱花,却看了一群花骨朵

    前言

    目前还处于编码入门阶段的我,有一次老大交给我一个任务说:知识分享你准备一下设计模式吧!What?什么是设计模式?介个这是个什么东西!!!!嗯……老大看意味深长的眼神看了看我,嗯,我从中看到了鄙视,哈哈哈,这就让我开启了这个了解设计模式之路,当然我没有去了解学习全部的,专供了行为型,剩下的模式由另外一个同事完成,知识分享的时候大家都一块学习喽*-*

    在分享这个设计模式之前呢,我也和几个工作了几年的程序猿们交流了一下,了解到其实在日常开发中,大部分开发人员所做的工作,需要开发的代码都是基于业务的,在写代码时也不会考虑说嗯,这个代码我需要拿哪个设计模式来实现,不是生搬硬套的过程。那当然如果说站到了或者说走到了架构人员的这个岗位,他们可能会更多的考虑到所开发的框架中适用哪种模式可以更好的维护代码。并且在我学习了这个模式,更加的确认了,这个模式可能在框架或者说一些工具的底层应用的较多。所以,了解这个设计模式不是说非要让我们直接在日常开发中就一定要用这个,不是这样的,主要的目的在于能够更多的了解,明白其中的框架思想,这个思想可能会影响到我们日后代码的质量。

    进入正题……

    今天我分享行为型模式中的策略模式,比较而言是简单易懂的一种模式,为了更易于自己理解以及网上资料的多少,似乎python语言不能很好的解释抽象类、接口得概念与思想,对比之下java语言似乎好理解一些,更明确一些。

    策略模式

    策略模式,

    首先的概念为:定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

    说起来可能比较抽象,那就拿例子具体来说,比如鹅厂,对于玩家进行了等级划分,那划分的依据就是你累计购买的金币数,当你购买的金币超过3万了,你就是黄金会员,棒棒哒,超过2万:超级会员,超过1万:普通会员,没超过一万呢,对不起,你只能是普通玩家了,不打折的,划分这个等级干嘛用的呢?就是为了以后你买金币的时候会根据你的会员等级给你打折呀。那人家到底应该对你打几折,那就根据不同等级指定不同的策略喽,你普通玩家还想打超级会员的折,那你是在做梦!!!!!但是如果实现的代码算法里面是一串的if else判断来确认给你打几折,最后付多钱,岂不是很麻烦,所以就把每个策略进行封装,在客户购买金币时,能识别出所属等级,对应切换到具体等级的打折算法中,计算出你应该付多钱。

    说了这么多亲爱的你,了解了?

    哦  我知道你可能还没有理解,那就撸代码吧。在撸之前需要明确或者知道,策略模式中主要区分了几种角色,按照这种模式所提到的角色,具体去写会比较容易,然后按照自己的需求去补充对应的功能。

    具体涉及三个角色

    1.环境角色:持有一个策略的引用

    2.抽象策略角色:抽象角色,通常由一个接口或者抽象类实现, 此角色给出所有的具体策略类所需要的接口,在具体策略类中实现接口所要完成的功能

    3.具体策略角色:包装了相关的算法和行为

    (1)抽象策略类

    即你就只是定义一个抽象的策略,接口里面具体的策略通过其他具体策略类来实现,不同的策略类实现的结果也会不一致,但都会实现这个抽象策略

    抽象策略类

    (2)具体策略类

    以下几个是具体策略类的实现,请看图

    普通玩家策略:不打折 Vip玩家策略:打九折 超级会员玩家:打八折 黄金会员玩家:打七折

    (3)环境类,

    如何将这几个策略切换呢,就需要在这个环境类中实现

    玩家等级划分,决定了策略的不同

    (4)测试策略模式的Client类

    new一个玩家,根据购买钱数,是否与策略对应

    根据实际例子是不是就很容易去理解,将每个策略封装起来,在玩家类中进行切换就可以。是解决了众多if else的问题,也比较方便扩展,但有优点那就存在缺点,当项目比较大的时候,策略太多,就不太好维护了。需要辩证的看待它,适时使用,当然平常可能也许大概用不到吧

    后记

    本篇为什么没有提供原代码,方便复制呢?后期也不会有,第一个原因很简单,因为我懒呀,截图多方便,没办法我就是这么诚实 第二个原因呢就是想读者真的通过看例子去深深的理解,当然看完之后会不会去用,去写是另外一回事,但是我希望读者你,对,就是你,那个爱学习的你,通过这篇笔记,你对这个模式有了自己的理解与认知,不再是一知半解或者完全不了解的情况,当然理解没理解只有自己知道,不要欺骗自己呦!感谢关注与收看,一起共同进步呦

    11种行为设计模式之策略模式

    相关文章

      网友评论

        本文标题:11种行为设计模式之策略模式

        本文链接:https://www.haomeiwen.com/subject/bvonqftx.html