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

状态模式(StatePattern):一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决,当控制一个对象状态的条件表达式过于复杂时的情况;把状态的判断逻辑转移

状态模式(State Pattern):

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

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

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

状态模式的角色:

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

状态模式的案例:

实现类图:

实现代码:

/** * 上下文环境(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());

}

}

本站部分文章来自网络或用户投稿,如无特殊说明或标注,均为本站原创发布。涉及资源下载的,本站旨在共享仅供大家学习与参考,如您想商用请获取官网版权,如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
投稿

全球音质最好的播放器推荐(无损播放器哪个牌子音质好)

2025-5-24 7:54:41

投稿

1000元5g手机排行榜最新(手机排行榜最新)

2025-5-24 7:54:54

搜索