23种设计模式之状态模式
模式结构
- 环境类(Context)角色:也称为上下文,它定义了客户端需要的接口,内部维护一个当前状态,并负责具体状态的切换。
- 抽象状态(State)角色:定义一个接口,用以封装环境对象中的特定状态所对应的行为,可以有一个或多个行为。
- 具体状态(Concrete State)角色:实现抽象状态所对应的行为,并且在需要的情况下进行状态切换。
案例
public class Context {
private State state;
public Context() {
this.state = new ConcreteStateA();
}
public void setState(State state) {
this.state = state;
}
public State getState() {
return (state);
}
public void Handle() {
state.Handle(this);
}
}
public abstract class State {
public abstract void Handle(Context context);
}
public class ConcreteStateA extends State{
@Override
public void Handle(Context context) {
System.out.println("当前状态是 A.");
context.setState(new ConcreteStateB());
}
}
public class ConcreteStateB extends State{
@Override
public void Handle(Context context) {
System.out.println("当前状态是 B.");
context.setState(new ConcreteStateA());
}
}
public class StateTest {
public static void main(String[] args) {
Context context=new Context();
context.Handle();
context.Handle();
context.Handle();
context.Handle();
}
}