设计模式(十三)状态模式

版权声明: https://blog.csdn.net/if_i_were_a/article/details/84000311

状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类

状态模式主要解决的是当控制一个对象的状态转换的条件表达式过于复杂的时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的类判断逻辑化

状态模式的类图:

public abstract class State {
    public abstract void Handle(Context context);
}
public class ConcreteStateA extends State{
    @Override
    public void Handle(Context context) {
        context.state=new ConcreteStateB();
    }
}
public class ConcreteStateB extends State{
    @Override
    public void Handle(Context context) {
        context.state=new ConcreteStateA();
    }
}
public class Context {
    protected State state;
    public Context(State state)
    {
        this.state=state;
    }

    public State getState() {
        return state;
    }

    public void setState(State state) {
        this.state = state;
    }
    public void request()
    {
        System.out.println("当前工作状态"+state.getClass().getName());
        //对请求作出处理,并设置下一状态
        state.Handle(this);
    }

}
public class Main {
    public static void main(String[] args) {
        Context c=new Context(new ConcreteStateA());
        c.request();
        c.request();
        c.request();
        c.request();
    }
}

猜你喜欢

转载自blog.csdn.net/if_i_were_a/article/details/84000311