状态设计模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。将动作委托到代表当前状态的类。行为会随着内部状态而改变。状态模式的类图和策略模式一模一样。但是两者的用法不同。使用状态设计模式会导致设计的类的数量会大大增加。
一个不太恰当的代码实现:
[img]http://dl2.iteye.com/upload/attachment/0130/5902/fa8d1116-ee52-3366-9146-5aba7d3d93dc.png[/img]
一个不太恰当的代码实现:
public class StateMain {
//状态接口
State beginState;
State endState;
public void begin(){
beginState.begin();
}
public void end(){
endState.end();
}
public State getBeginState() {
return beginState;
}
public void setBeginState(State beginState) {
this.beginState = beginState;
}
public State getEndState() {
return endState;
}
public void setEndState(State endState) {
this.endState = endState;
}
}
public class BeginState implements State{
private StateMain stateMain;
public BeginState(StateMain stateMain) {
this.stateMain = stateMain;
}
@Override
public void begin() {
System.out.println("开始状态");
//将状态委托到另一个类中执行
stateMain.setEndState(stateMain.getEndState());
}
@Override
public void end() {
System.out.println("开始状态");
}
}
[img]http://dl2.iteye.com/upload/attachment/0130/5902/fa8d1116-ee52-3366-9146-5aba7d3d93dc.png[/img]