策略模式

        先看下下面的这部分代码,有一个职业的枚举,用来确认有哪些职业。在FGO类中,有一个Attack函数,表示不一样角色进行不一样的***。
程序员

图片.png


        初看这段代码没有什么问题,可是随着职业的增长,还会写不少的if else语句,这里就存在两个问题
ide

        一、每次都得编译这部分代码?代码可复用性?
函数

        二、若是每次进来都是最后一个else分支,那是否是前面的判断都是无用的?这是否是就致使了程序须要的内存变大了?
学习


带着这两个问题,我们来看策略模式的解决办法spa


首先,我们把每一个人物都是有***属性的,我们先把这部分抽象出来3d

spacer.gif图片.png


接着,不一样职业的人物,就能够经过继承,重写attack的方式,来完成不一样职业的***方法blog

图片.png



这样,我们的策略模式就完成了一大半了,那么我们怎么来使用策略模式的代码呢,继承

图片.png


        这就是策略模式的所有内容,这里有提到工厂方法,后续会对工厂方法进行学习,说明。
图片


        能够看到,若是之后有新增的职业时,只须要增长一个该职业的子类,以及修改工厂方法中的部份内容就能够了。这样代码就具备了高可用性,同时也解决了以前的两个问题。代码大部分都是稳定的,只有少部分是变化的。
内存

        好了,今天就到这里。睡觉

我是程序员的颈椎, 欢迎你们一块儿学习交流QQ群689930130

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息