状态模式
设计原则:遵循单一职责、依赖倒置、开闭原则
常用场景:一个对象在多个状态下行为不同,且这些状态可互相转换
使用概率: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");
}
}
}