java状态机设计模式及实现(java状态机在订单中应用)

状态模式(State Pattern):

一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

状态模式主要解决,当控制一个对象状态的条件表达式过于复杂时的情况;把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化;

状态模式的角色:

上下文环境(Context)角色、抽象状态(State)角色、具体状态(Concrete State)和客户端(Client)角色;

状态模式的案例:

实现类图:

java状态机设计模式及实现(java状态机在订单中应用)

实现代码:

/**
* 上下文环境(Context)角色
*/
public class Context {

private State state;

public Context() {
state = null;
}

public void setState(State state) {
this.state = state;
}

public State getState() {
return state;
}

}
/**
* 抽象状态(State)角色
*/
public interface State {

public void doAction(Context context);

}
/**
* 具体状态(Concrete State)
*/
public class StartState implements State {

public void doAction(Context context) {
System.out.println(“Player is in start state.”);
context.setState(this);
}

public String toString() {
return “Start State”;
}

}
/**
* 具体状态(Concrete State)
*/
public class StopState implements State {

public void doAction(Context context) {
System.out.println(“Player is in stop state.”);
context.setState(this);
}

public String toString() {
return “Stop State”;
}
}
/**
* 客户端
*/
public class Client {

public static void main(String[] args) {
Context context = new Context();

StartState startState = new StartState();
startState.doAction(context);
System.out.println(context.getState().toString());

StopState stopState = new StopState();
stopState.doAction(context);
System.out.println(context.getState().toString());

}

}

资讯投稿

国债是什么意思(国债又被称为)

2022-6-26 9:03:11

资讯投稿

讨薪找哪个部门最有效(欠工钱多少钱可以报警)

2022-6-26 10:02:01

免责声明 本站上的文章来源于发布者,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。如有侵害您的权益,请发送10890907@qq.com 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
搜索