先看下下面的这部分代码,有一个职业的枚举,用来确认有哪些职业。在FGO类中,有一个Attack函数,表示不一样角色进行不一样的***。
程序员
初看这段代码没有什么问题,可是随着职业的增长,还会写不少的if else语句,这里就存在两个问题
ide
一、每次都得编译这部分代码?代码可复用性?
函数
二、若是每次进来都是最后一个else分支,那是否是前面的判断都是无用的?这是否是就致使了程序须要的内存变大了?
学习
带着这两个问题,我们来看策略模式的解决办法spa
首先,我们把每一个人物都是有***属性的,我们先把这部分抽象出来3d
接着,不一样职业的人物,就能够经过继承,重写attack的方式,来完成不一样职业的***方法blog
这样,我们的策略模式就完成了一大半了,那么我们怎么来使用策略模式的代码呢,继承
这就是策略模式的所有内容,这里有提到工厂方法,后续会对工厂方法进行学习,说明。
图片
能够看到,若是之后有新增的职业时,只须要增长一个该职业的子类,以及修改工厂方法中的部份内容就能够了。这样代码就具备了高可用性,同时也解决了以前的两个问题。代码大部分都是稳定的,只有少部分是变化的。
内存
好了,今天就到这里。睡觉
我是程序员的颈椎, 欢迎你们一块儿学习交流QQ群689930130