设计模式 之 状态模式(State Pattern)

原创
2018/06/29 10:05
阅读数 24

优点

避免代码中出现冗长的if - else if - else 判断代码块,同时将不同状态(条件)的逻辑代码转到具体类中,使代码结构更加清晰,方便后期修改

缺点

如果状态(条件)较多,会导致创建较多状态类,增加内存消耗

代码实现

  • 环境类,用于存放状态和调用状态实现业务
/**
 * Context
 */
public class Context {

    private State state;

    /**
     * @param state the state to set
     */
    public void setState(State state) {
        this.state = state;
    }

    /**
     * @return the state
     */
    public State getState() {
        return state;
    }

    public void doAction() {
        state.doAction();
    }
}
  • 状态接口
/**
 * State
 */
public interface State {

    public void doAction();

}
  • 状态实现类,相当于实现对应业务
/**
 * StartState
 */
public class StartState implements State {

    @Override
    public void doAction() {
        System.out.println("In start state");
        System.out.println("start now");
    }

}
/**
 * StopState
 */
public class StopState implements State{

    @Override
    public void doAction() {
        System.out.println("In stop state");
        System.out.println("stop now");
    }
}
  • 演示
/**
 * DemoMain
 */
public class DemoMain {

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

        StartState startState = new StartState();
        context.setState(startState);
        context.doAction();

        StopState stopState = new StopState();
        context.setState(stopState);
        context.doAction();
    }
}

参考:状态设计模式-runoob
参考:状态设计模式-CSDN

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部