状态模式(State Pattern):
文章插图
一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 。
状态模式主要解决,当控制一个对象状态的条件表达式过于复杂时的情况;把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化;
状态模式的角色:
上下文环境(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);}
【java状态机在订单中应用 java状态机设计模式及实现】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());
}
}
- 你在喝醉之后是怎么醒酒的 过量饮酒的穴位按摩解酒
- 在山上遇到会动的铁丝不要碰有毒 经常吃生鱼片要驱虫吗
- 江南的美食在春季百姓日用何事何物来养生 春季干燥喝什么粥
- 现在社会上流行做六十七十大寿 晚辈满足老人性需要
- 白血病治疗是国家报销吗 为什么会得白血病
- 西安有哪些适合情侣住的民宿 西安适合情侣逛的地方
- 男生睡一个女生和真心处对象区别在哪 男生谈恋爱时生理反应
- 中医如何做到两者兼顾养生调理 阴虚和阳虚同时存在吃什么药
- 患上感冒咳嗽能喝橙汁吗 咳嗽可以喝果汁吗
- 正佳广场有什么好玩的地方呢 汗蒸缸自己在家里蒸好吗