longshu

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

State 状态模式

  • 状态模式:
    允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。
    其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。

  • 结构图:
    State_structure

  • 示例类图:
    State_uml

  • 示例代码:

public interface State {
    public void handle();
}

public class StartState implements State{
    @Override
    public void handle() {
        System.out.println("Player is in start state");
    }
}
public class StopState implements State{
    @Override
    public void handle() {
        System.out.println("Player is in stop state");
    }
}

public class Context {
    private State state;

    public void request() {
        state.handle();
    }

    public State getState() {
        return state;
    }

    public void setState(State state) {
        this.state = state;
    }
}

// 测试
public class StateTest {

    public static void main(String[] args) {
        Context context = new Context();
        StartState startState = new StartState();
        context.setState(startState);

        context.request();

        context.setState(new StopState());
        context.request();
    }
}
posted on 2016-12-29 11:02  longshu  阅读(105)  评论(0编辑  收藏  举报