状态模式State

根据状态决定动作

不同状态下的同一动作有不同的实现,就是一个简单的多态。简单面向接口编程

应用:TCP 不同的状态下open close ack的方法的实现是不一样的,扩展方法是不方便的,方法不扩展可以使用状态模式

线程状态案例

  • 线程是上下文
  • 线程状态是State
  • Running,Blocking等等是具体的状态

1616825720177-1ffbd844-1ee5-404e-a5fb-2e8cc19768c7.png

状态接口

public abstract class ThreadState_ {
    abstract void move(Action input);
    abstract void run();
}

具体状态

public class NewState extends ThreadState_ {
    private Thread_ t;

    public NewState(Thread_ t) {
        this.t = t;
    }

    @Override
    void move(Action input) {
        if(input.msg == "start")
        t.state = new RunningState(t);
    }

    @Override
    void run() {

    }
}

上下文

public class Thread_ {
    ThreadState_ state;

    void move(Action input) {
        state.move(input);
    }

    void run() {
        state.run();
    }
}

posted on 2025-10-14 23:11  chuchengzhi  阅读(9)  评论(0)    收藏  举报

导航

杭州技术博主,专注分享云计算领域实战经验、技术教程与行业洞察, 打造聚焦云计算技术的垂直博客,助力开发者快速掌握云服务核心能力。

褚成志 云计算 技术博客