状态模式

对象的行为依赖于它的状态,并且可以根据它的状态改变而改变它的相关行为。Context类是一个状态管理器,控制状态转换。

状态模式

public interface State {
    void changeState(Context context);

    void action();
}

public class AliveState implements State {
    @Override
    public void action() {
        System.out.println("alive action");
    }
}

public class DeathState implements State {
    @Override
    public void action() {
        System.out.println("death action");
    }
}

public class Context {
    private State state;

    private String value;

    public void run() {
        changeState();
        this.state.action();
    }

    private void changeState() {
        if ("alive".equals(value)) {
            this.state = new AliveState();
        }
        if ("death".equals(value)) {
            this.state = new DeathState();
        }
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

@Test
public void StateTest() {
    Context context = new Context();
    context.setValue("alive");
    context.run();
    context.setValue("death");
    context.run();
}

状态模式