状态模式

定义:允许对象在状态改变时改变它的行为,对象看起来好像修改了它的类。

类图

状态模式和策略模式

  • 状态模式和策略模式的类图一样,本质上都是针对对象行为进行封装,区别在于其不同的“意图”
  • 策略模式用于给Context对象选择最合适的行为。
  • 状态模式主要在于处理Context对象在运行过程中的不同状态下所表现的不同行为。

示例

//State
public interface GameState {
    void doAction();
}

//ConcreteState
public class GameStart implements GameState {
    @Override
    public void doAction() {
        System.out.println("开始游戏!");
    }
}

//ConcreteState
public class GameEnd implements  GameState {
    @Override
    public void doAction() {
        System.out.println("结束游戏!");
    }
}

//Context
public class Context {
    private GameState state;
    public Context(){
        state = new GameStart();//设置Context的初始状态
    }
    public void setState(GameState state) {
        this.state = state;
    }
    void doAction(){
        state.doAction();
    }
}

public class Client {
    public static void main(String[] args){
        Context context = new Context();
        context.setState(new GameStart());
        context.doAction();
        context.setState(new GameEnd());
        context.doAction();
    }
}

 

运行结果

posted @ 2020-02-26 21:51  Camcay  阅读(177)  评论(0)    收藏  举报