- Java工厂设计模式
- Java抽象工厂模式
- Java单例模式
- Java建造者(Builder)模式
- Java原型模式
- Java适配器模式
- Java桥接模式
- Java过滤器模式(条件模式)
- Java组合模式
- Java装饰模式
- Java门面模式(或外观模式)
- Java享元模式(Flyweight Pattern)
- Java责任链模式
- Java命令模式
- Java迭代器模式
- Java中介者模式(Mediator Pattern)
- Java解释器模式
- Java备忘录模式
- Java观察者模式
- Java状态模式
- Java空对象模式
- Java策略模式
- Java模板模式
- Java访问者模式
- Java MVC模式
- Java业务代理模式
- Java组合实体模式
- Java数据访问对象模式
- Java前端控制器模式
- Java拦截过滤器模式
- Java服务定位器模式
- Java传输对象模式
Java状态模式
在状态模式中,类行为根据其状态而改变。 这种设计模式属于行为模式。
在状态模式中,我们创建表示各种状态的对象,以及随状态对象变化而行为变化的上下文对象。
实现
我们将创建一个State
接口来定义一个动作并实现State
接口的具体状态类。Context
是一个载有一个状态的类。
演示类StatePatternDemo
将使用Context
和状态对象来演示上下文行为基于它所处的状态类型的变化。
第1步:创建一个接口,State.java -
public interface State { public void doAction(Context context); }
第2步:创建实现相同接口的具体类。StartState.java -
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"; } }
文件:StopState.java -
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"; } }
第3步:创建 Context 类,Context.java -
public class Context { private State state; public Context(){ state = null; } public void setState(State state){ this.state = state; } public State getState(){ return state; } }
第4步:使用Context
查看状态更改时的行为更改。StatePatternDemo.java -
public class StatePatternDemo { 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()); } }
第5步:验证输出结果 -
Player is in start state Start State Player is in stop state Stop State
分类导航
- Java教程
- Vim教程
- Swing教程
- Spring教程
- Spring Web Services教程
- Spring MVC教程
- Spring JDBC教程
- Spring Cloud教程
- Spring Boot教程
- Spring Boot CLI教程
- Spring Batch教程
- Spring AOP教程
- PDFBox教程
- JSP教程
- JSF教程
- JPA教程
- Java面向对象设计
- Java设计模式
- Java虚拟机教程
- Java泛型教程
- Java正则表达式教程
- Java数据类型教程
- Java并发编程教程
- Java密码学教程
- Java多线程教程
- Java国际化(i18n)教程
- JavaFX教程
- Java9教程
关注微信小程序
扫描二维码
程序员编程王