? ? ? ? ?状态模式(State Pattern)是一种行为型设计模式,它允许对象在内部状态改变时改变其行为。这种模式将与特定状态相关的操作和行为封装到单独的状态类中,当对象的状态变化时,就调用相应状态类的方法来处理。
状态模式java示例代码如下:
// 抽象状态接口
interface State {
void handle(Context context);
}
// 具体状态类
class ConcreteStateA implements State {
@Override
public void handle(Context context) {
System.out.println("Handling state A");
// 更改状态至 B
context.setState(new ConcreteStateB());
}
}
class ConcreteStateB implements State {
@Override
public void handle(Context context) {
System.out.println("Handling state B");
// 更改状态至 A
context.setState(new ConcreteStateA());
}
}
// 上下文类
class Context {
private State state;
public Context(State state) {
setState(state);
}
public void setState(State state) {
this.state = state;
}
public void request() {
state.handle(this);
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
Context context = new Context(new ConcreteStateA());
context.request(); // 输出 "Handling state A"
context.request(); // 输出 "Handling state B"
context.request(); // 输出 "Handling state A"
}
}
? 说明:上面代码中Context
?类持有?State
?对象,并在请求时调用当前状态对象的?handle()
?方法。每次调用?handle()
?方法时,都会根据需要切换到下一个状态。
?