状态模式

canca canca
2007-03-26 15:12
1
0

//状态模式
//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);
 }
}

发表评论