设计模式_状态模式

模式:行为型模式
优点:

  1. 随着状态的改变,那么其行为也被改变了。
  2. 符合开闭原则。例如下面的例子,我们可以不必修改上下文就可以更改其行为;可以随时增加 state 或减少。
  3. 条件、分支语句的代替者。

缺点:

  1. 多种状态造成系统类的增多。

✨ 代码
上下文

public interface Context {
    public void setState(State state);
    public void print();
}

上下文实现

public class DefaultContext implements Context {

    private State state;

    public State getState() {
        return state;
    }

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

    @Override
    public void print() {
        this.state.print();
    }
}

状态抽象

public interface State {
    public String doAction(Context context);
    public void print();
}

状态实现1

public class StartState implements State {
    @Override
    public String doAction(Context context) {
        context.setState(this);
        return null;
    }

    @Override
    public void print() {
        System.out.println("StartState");
    }
}

状态实现2

public class EndState implements State {
    @Override
    public String doAction(Context context) {
        context.setState(this);
        return null;
    }

    public void print(){
        System.out.println("EndState");
    }
}
原文地址:https://www.cnblogs.com/tjc1996/p/10815599.html