状态模式
//状态模式
//CopyRight(C) CAnca software Office.2006
//Created by CAnca.
//说明:将状态封装成一个独立的类.状态父类中的方法是状态管理器的方法.
//适用于多分支判断,例:画图软件.选择某种工具,有不同的效果出现.
public class StateMode{
public static void main(String[] args){
// Setup context in a state
StateManager c = new StateManager(new ConcreteStateA());
// Issue requests, which toggles state
c.Request();
c.Request();
c.setState(new ConcreteStateB());
c.Request();
c.Request();
}
}
//State
abstract class State{
abstract void HandleRequest(StateManager m);
}
class ConcreteStateA extends State{
public void HandleRequest(StateManager m){
m.setState(new ConcreteStateB());
}
}
class ConcreteStateB extends State{
public void HandleRequest(StateManager m){
m.setState(new ConcreteStateA());
}
}
//State Manager
class StateManager{
private State state;
public StateManager(State state){
this.state = state;
}
public void setState(State state){
this.state = state;
System.out.println("State: " + state.getClass().getName());
}
public State getState(){
return this.state;
}
public void Request(){
state.HandleRequest(this);
}
}