/**
* 状态模式
* 类型:行为型
* 描述:当一个对象内在状态改变时允许改变其行为能力,这个对象看起来像改变了其类
*/
public class StateMode {
// 状态接口
public static interface State {
void handle(Context context);
}
// 状态上下文
public static class Context {
private State state;
public void setState(State state)
{
this.state = state;
}
public void request()
{
state.handle(this);
}
}
// 具体状态
public static class ConcreteStateA implements State {
public void handle(Context context)
{
System.out.println("ConcreteStateA handle");
context.setState(new ConcreteStateB());
}
}
public static class ConcreteStateB implements State {
public void handle(Context context)
{
System.out.println("ConcreteStateB handle");
context.setState(new ConcreteStateA());
}
}
public static void main(String[] args)
{
Context context = new Context();
context.setState(new ConcreteStateA());
context.request();
context.request();
context.request();
}
}