java状态机设计模式
时间: 2023-07-03 13:18:55 浏览: 40
状态机是一种行为型设计模式,它允许对象在内部状态改变时改变它的行为。Java 状态机模式的核心思想是将状态抽象成一个独立的类,并且实现状态之间的转换。状态机模式通常包含以下几个部分:
1. 状态接口:定义了状态所需的方法。
2. 具体状态类:实现状态接口,并且保存状态所需的数据。
3. 上下文类:维护当前状态,并且委托给当前状态处理请求。
下面是一个简单的 Java 状态机示例:
```java
// 状态接口
interface State {
void handle();
}
// 具体状态类
class ConcreteStateA implements State {
@Override
public void handle() {
System.out.println("ConcreteStateA is handling...");
}
}
class ConcreteStateB implements State {
@Override
public void handle() {
System.out.println("ConcreteStateB is handling...");
}
}
// 上下文类
class Context {
private State state;
public Context(State state) {
this.state = state;
}
public void setState(State state) {
this.state = state;
}
public void request() {
state.handle();
}
}
// 测试类
public class Main {
public static void main(String[] args) {
Context context = new Context(new ConcreteStateA());
context.request();
context.setState(new ConcreteStateB());
context.request();
}
}
```
在上面的示例中,我们定义了一个状态接口和两个具体状态类。上下文类维护当前状态,并且委托给当前状态处理请求。在测试类中,我们创建了一个上下文对象,并且分别调用了两个不同的状态类的方法。
状态机模式可以帮助我们简化复杂的状态转换逻辑,并且使代码更加清晰易懂。