一聚教程网:一个值得你收藏的教程网站

热门教程

java 设计模式之State(状态模式)

时间:2022-06-29 01:22:15 编辑:袖梨 来源:一聚教程网

java 设计模式之State(状态模式)

在状态模式中,一个类的行为基于它的状态的改变而改变。状态模式归属于行为型模式。

在下面的实例中,我们创建了一个接口State,定义了一个操作方法,两个实现类StartState和StopState。另外,创建了一个上下文类Context,这个类关联到State类。UML类图如下所示:

//状态类
publicinterfaceState {
  publicvoiddoAction(Context context);
}
//实现类StartState.java
publicclassStartStateimplementsState {
  publicvoiddoAction(Context context) {
   System.out.println("Player is in start state");
   context.setState(this); 
  }
  publicString toString(){
   return"Start State";
  }
}
//实现StopState.java
publicclassStopStateimplementsState {
  publicvoiddoAction(Context context) {
   System.out.println("Player is in stop state");
   context.setState(this); 
  }
  publicString toString(){
   return"Stop State";
  }
}
  
//上下文Context.java 实际运用时可自行更改
publicclassContext {
  privateState state;
  publicContext(){
   state =null;
  }
  publicvoidsetState(State state){
   this.state = state;        
  }
  publicState getState(){
   returnstate;
  }
}
  
//测试类
publicclassStatePatternDemo {
  publicstaticvoidmain(String[] args) {
   Context context =newContext();
   StartState startState =newStartState();
   startState.doAction(context);
   System.out.println(context.getState().toString());
   
   StopState stopState =newStopState();
   stopState.doAction(context);
   
   System.out.println(context.getState().toString());
  }
}


输出结果

Player is in start state
 
Start State
 
Player is in stop state
 
Stop State

热门栏目