设计模式---状态模式Java示例实现
2016-11-07 17:17
746 查看
示例为电梯运行模拟,共有4个状态,打开,关闭,启动,停止。电梯在这四个状态之间切换。设计模式原理见设计模式 ( 十七) 状态模式State(对象行为型)
State.java
OpenState.java
CloseState.java
StopState.java
StartState.java
Lift.java 电梯类,即设计模式中的 Context类
StateTest.java 测试类
State.java
public interface State { void stop(Lift lift); void start(Lift lift); void open(Lift lift); void close(Lift lift); }
OpenState.java
public class OpenState implements State { @Override public void stop(Lift lift) { } @Override public void start(Lift lift) { } @Override public void open(Lift lift) { System.out.println("lift is opening"); } @Override public void close(Lift lift) { final State state = new CloseState(); lift.setState(state); state.close(lift); } }
CloseState.java
public class CloseState implements State { @Override public void stop(Lift lift) { } @Override public void start(Lift lift) { final State state = new StartState(); lift.setState(state); state.start(lift); } @Override public void open(Lift lift) { final State state = new OpenState(); lift.setState(state); state.open(lift); } @Override public void close(Lift lift) { System.out.println("lift is closing"); }
StopState.java
public class StopState implements State { @Override public void stop(Lift lift) { System.out.println("lift is Stoping"); } @Override public void start(Lift lift) { final State state = new StartState(); lift.setState(state); state.start(lift); } @Override public void open(Lift lift) { final State state = new OpenState(); lift.setState(state); state.open(lift); } @Override public void close(Lift lift) { } }
StartState.java
public class StartState implements State { @Override public void stop(Lift lift) { final State state = new StopState(); lift.setState(state); state.stop(lift); } @Override public void start(Lift lift) { System.out.println("lift is starting"); } @Override public void open(Lift lift) { } @Override public void close(Lift lift) { } }
Lift.java 电梯类,即设计模式中的 Context类
public class Lift { public Lift(State state) { this.state = state; } private State state; public void setState(State state) { this.state = state; } public void start() { state.start(this); } public void open() { state.open(this); } public void stop() { state.stop(this); } public void close() { state.close(this); } }
StateTest.java 测试类
public class StateTest { @Test public void test() { Lift lift = new Lift(new CloseState()); lift.start(); lift.stop(); lift.open(); lift.close(); } }
相关文章推荐
- 使用模板方法模式实现可扩展性设计(Java示例)
- 设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 状态模式(State Pattern) - Java实现
- 游戏开发设计模式之状态模式 & 有限状态机 & c#委托事件(unity3d 示例实现)
- 设计模式之第21章-状态模式(Java实现)
- 设计模式--状态模式(分布式中间件熔断器Java实现)
- 游戏开发设计模式之状态模式 & 有限状态机 & c#委托事件(unity3d 示例实现)
- 关于JAVA中状态设计模式的讲解示例代码
- java设计模式之实现对象池模式示例分享
- 游戏开发设计模式之状态模式 & 有限状态机 & c#委托事件(unity3d 示例实现)
- 设计模式解析和实现(C++, java)之二十--状态(state)模式
- Java设计模式菜鸟系列(十三)建模和实现状态模式
- 23种经典设计模式的java实现_3_桥接模式
- 怎样使用Java实现Factory设计模式
- Java设计模式:单态模式,工厂模式,代理模式,观察者模式示例
- Java设计模式(10) —— 状态
- Java设计模式之State(状态模式)
- 23种经典设计模式的java实现_5_职责链模式
- 《设计模式——基于C#的工程化实现及扩展》示例说明
- 用Java实现的设计模式系列(1)-Factory
- 设计模式:用Java动态代理实现AOP