状态模式 设计原则:遵循单一职责、依赖倒置、开闭原则 常用场景:一个对象在多个状态下行为不同,且这些状态可互相转换 使用概率:20% 复杂度:中 变化点:状态的种类 选择关键点:这些状态是否经常在运行时需要在不同的动态之间相互转换 逆鳞:无 相关设计模式 策略模式:二者的实现方式非常相似,策略接口与状态接口,具体的策略与具体的状态以及二者都拥有的上下文,如果看它们的类图 ,会发现几乎一模一样,而二者不同的地方就在于,状态模式经常会在处理请求的过程中更改上下文的状态, 而策略模式只是按照不同的算法处理算法逻辑,而且从实际场景来讲,顾名思义,状态模式改变的是状态,策略模式改变的是策略 主要思想: 实际就是当前对象的状态(往往是一个或多个属性)不同,那么同样的方法执行结果是不同的 就是在方法内进行状态判断if else 的执行 注意是判断本对象的属性,而策略模式往往是根据传参来判断
public class MyStatue { private int status; public void setStatus(int status) { this.status = status; } public void doSomething() { if (status==1) { System.out.println("do1"); } else if (status==2) { System.out.println("do2"); } else { System.out.println("do another"); } }}