老样子:
其实状态模式怎么说呢:
就是这样,当然你也可以写上千行的if语句,不过很难维护啊!!!!
继续提示:依赖倒转原则
状态抽象类:
interface State{
static handle(String state);
}
具体实现了:
ConcretreStateA implements State{
static handle(String state){
if(state == 'A'){
//do
}else{
ConcretreStateB.handle(state);
}
}
}
ConcretreStateB implements State{
static handle(String state){
if(state == 'B'){
//do
}else{
return "无法解决"
}
}
}
使用者:
ConcretreStateA.handle("A");
//当然你可以建一个类,暴露出专门的调用接口
从上面,我们可以看到状态模式有如下的特点:
1.状态处理是线性的
2.一个状态类需要知道它的下一个状态类
啊哈,怎么和单向链表这么像啊!!!!!!
所以你可以用一个单向链表储存状态处理类,然后就可以进一步让类之间解耦了!!!
多么好的数据结构啊!