侧边栏壁纸
博主头像
Elltor

用心发现生活,积极面对工作、事,坚持每天让自己进步一点。

  • 累计撰写 169 篇文章
  • 累计创建 1 个标签
  • 累计收到 12 条评论
标签搜索

目 录CONTENT

文章目录

设计模式|状态模式

Elltor
2020-10-30 / 0 评论 / 0 点赞 / 101 阅读 / 1,091 字 / 正在检测是否收录...

在状态模式中,当一个对象的内在状态改变时允许改变其行为, 这个对象看起来像是改变了它的类。

代码

public abstract class State {
    public String stateName;
    public abstract void handle(Context context);
}
public class Context {
    private State state;

    public Context(State state) {
        this.state = state;
    }

    public void setState(State state) {

        System.out.println("当前状态为: "+this.state.stateName);
        this.state = state;
        System.out.println("状态变更为: "+this.state.stateName);
        System.out.println("--------------------");
    }

    public void request(){
        state.handle(this);
    }
}
public class ConcreteStateA extends State {
    public ConcreteStateA(){
        stateName = "状态A";
    }

    @Override
    public void handle(Context context) {
        context.setState(new ConcreteStateB());
    }
}
public class ConcreteStateB extends State{
    public ConcreteStateB() {
        stateName = "状态B";
    }

    @Override
    public void handle(Context context) {
        context.setState(new ConcreteStateA());
    }
}
public class Main {
    public static void main(String[] args) {
        Context context = new Context(new ConcreteStateA());

        context.request();
        context.request();
        context.request();
    }
}

//输出
当前状态为: 状态A
状态变更为: 状态B
--------------------
当前状态为: 状态B
状态变更为: 状态A
--------------------
当前状态为: 状态A
状态变更为: 状态B
--------------------
0

评论区