状态模式是java设计模式里面一种比较简单的设计模式 我们在项目开发过程中会遇到,很多的条件判断当,条件判断比较多(if else语局,swith() case 语句对应的case的时候,就需要用到状态模式)
public class NoStatusParrten {
public static void main(String[] agr){
int a =1;
if(a==0){
System.out.println(a);
}else if(a==1){
System.out.println(a);
}else if(a==2){
System.out.println(a);
}else if(a==3){
System.out.println(a);
}else if(a==4){
System.out.println(a);
}
}
}
试想一下如果每一种if里面的业务逻辑处理很复杂,这个类的代码行数会剧增,结构就会混乱,不便于梳理代码
public classStatusPatternOne {
public voidsysOut(inta) {
if(a == 0) {
System.out.println(a);} else{
StatusPatternOne one = newStatusPatternOne();one.sysOut(a);}
}
}
public classStatusPatternTwo {
public voidsysOut(inta) {
if(a == 2) {
System.out.println(a);} else{
StatusPatternThree three = newStatusPatternThree();three.sysOut(a);}
}
}
后续状态类省略......
再次调用的时候只需要如下调用,从StatusPatternOne 开始,即分支判断的入口开始调用
public classNoStatusParrten {
public static voidmain(String[] agr) {
inta = 1;StatusPatternOne statusPatternOne = newStatusPatternOne();statusPatternOne.sysOut(a);}
}
这样分状态管理,每个类只需要管理自己对应状态的业务逻辑处理,不是自己对应状态的,交给下一个状态对应的类处理。把分支里面复杂的业务逻辑进行内聚化,消除调用点庞大分支语法