- 状态角色抽象类
public abstract class AbstractState {
protected Context context;
public void setContext(Context context) {
this.context = context;
}
public abstract void handle1();
public abstract void handle2();
}
- 状态角色抽象类实现类
public class ConcreteState1 extends AbstractState{
@Override
public void handle1() {
//本状态逻辑处理
}
@Override
public void handle2() {
super.context.setCurrentState(Context.STATE2);
super.context.handle2();
}
}
public class ConcreteState2 extends AbstractState {
@Override
public void handle1() {
super.context.setCurrentState(Context.STATE1);
super.context.handle1();
}
@Override
public void handle2() {
//本状态逻辑处理
}
}
- 状态环境角色
public class Context {
public static final AbstractState STATE1= new ConcreteState1();
public static final AbstractState STATE2= new ConcreteState2();
//当前状态角色
private AbstractState currentState;
public AbstractState getCurrentState() {
return currentState;
}
public void setCurrentState(AbstractState currentState) {
this.currentState = currentState;
//切换状态
this.currentState.setContext(this);
}
//切换状态方法
public void handle1(){
this.currentState.handle1();
}
public void handle2(){
this.currentState.handle2();
}
}
- 场景使用
Context context = new Context();
AbstractState state1 =new ConcreteState1();
state1.setContext(context);
网友评论