状态模式
核心思想就是用于解决一个物体在不同状态下复杂的逻辑行为,比如一个英雄有待机状态,行走状态,攻击状态,以后可能还会添加眩晕状态,冰冻状态一系列状态。
如果使用平常代码来写的话,就会使用分支语句来判断状态,这样会造成一个类其中包含大量代码的情况,这无疑是非常麻烦的,并且不利于后期增加新的状态。
所以抽象出一个状态接口用来表示所有的状态,接口包含进入状态的方法,执行状态的方法,退出状态的方法,
给主角创建一个私有的状态接口变量用来存储当前状态,当要改变状态时就调用原状态的退出方法,再设置新状态以及调用新状态的进入和处理方法,后期要增加新状态只需要增加新的状态类去继承状态接口就行,不用再改前面代码
有限状态机
外观模式
大家有没有自己做饭的经历,小明和小李合租,做饭的时候小明要吃青椒炒蛋,于是小明去厨房用厨具,花生油,做完一盘青椒炒蛋。然后小李要吃西红柿炒蛋,于是去厨房用厨具,过了一会,问小明,你把厨具放哪里去了。
于是这就出现问题,但是如果他们请个保姆,小明和小李把想要吃什么给告诉保姆,保姆去帮他们去做,这样因为是一个人去使用,就不会出现厨具乱丢的情况,这就是外观模式。
核心思想就是当一个模块要调用各个子系统去实现一个功能时,使用一个外观类去具体调用各个子系统,而外观类只要对外提供一个接口让其他模块去调用。
单例模式
核心思想,自身设置一个静态的自身类属性,在实体化出一个此类实例赋值给静态属性,这样就可以在任何模块方便调用。
中介者模式
核心思想,让各个系统通过一个中介者类来相互调用,减少各个系统之间的直接调用,让代码更加清晰。
桥梁模式
抽象调用方式,抽象出桥,就想桥一样把两个变化点给分开,不管桥的两端怎么变化,桥不会变,
给变化点的类抽象出父类,再创建出父类行为,也就是桥。
给手机贴膜,一个手机有可能贴不同材质的膜,一种材质的膜也有可能贴不同品牌的膜,不变的是贴膜这个行为,也就是桥不变,
策略模式
达到一个目的有不同的方法,比如一个人要从上海去北京,它可以选择做高铁去,也可以选择做火车去,也可以选择做飞机去,区别只是到达的时间不同,消耗的金钱不同,但最终都能到达北京,这种不同的方式就是不同的策略。
核心思想,把实现算法抽象出一个接口,具体调用时使用接口,在具体实现时,让客户自己去选择使用哪个算法实现。
模板方法模式
一个南方人请客吃饭,首先他要先点菜,然后吃东西(吃米饭),最后买单
一个北方人请客吃饭,首先他要先点菜,然后吃东西(吃面条),最后买单
可以发现上面两种请客吃饭的步骤情况就和模板中刻出来一样,不同的只是其中吃东西不一样,这就是模板模式。
核心就是在抽象类中定义一个请客的方法,然后定义点菜,吃东西,买单三个抽象方法,在请客方法中调用三个方法,然后每个继承类对这三个方法有不同实现就重写达到不同的效果。