/**
* 状态模式。
* @author Bright Lee
*/
public class StatePattern {
public static void main(String[] args) {
Context context = new Context();
context.request();
context.request();
}
}
class Context {
private State stateA;
private State stateB;
private State currentState;
public Context() {
this.stateA = new ConcreteStateA(this);
this.stateB = new ConcreteStateB(this);
this.currentState = stateA;
}
public void request() {
currentState.handle();
}
public State getStateA() {
return stateA;
}
public State getStateB() {
return stateB;
}
void setCurrentState(State currentState) {
this.currentState = currentState;
}
}
interface State {
void handle();
}
class ConcreteStateA implements State {
private Context context;
public ConcreteStateA(Context context) {
this.context = context;
}
public void handle() {
System.out.println("现在是状态A,马上转换到状态B。");
context.setCurrentState(context.getStateB());
}
}
class ConcreteStateB implements State {
private Context context;
public ConcreteStateB(Context context) {
this.context = context;
}
public void handle() {
System.out.println("现在是状态B,马上转换到状态A。");
context.setCurrentState(context.getStateA());
}
}
运行结果:
现在是状态A,马上转换到状态B。
现在是状态B,马上转换到状态A。
榴芒客服系统:https://blog.youkuaiyun.com/look4liming/article/details/83146776
本文详细介绍了状态模式的设计原理及其实现方式,通过一个具体的Java示例,展示了如何使用状态模式来管理对象的状态变化,使代码更加清晰和灵活。
1202

被折叠的 条评论
为什么被折叠?



