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()); }}
派优网部分新闻资讯、展示的图片素材等内容均为用户自发上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习交流。用户通过本站上传、发布任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们一经核实,立即删除。并对发布账号进行封禁。
(0)
派大星的头像派大星

相关推荐

返回顶部