属于行为型模式(共11种)

    根据状态决定行为
    一个类里的动作根据他的状态不同会有不同的反应
    一般用于 行为/动作 不会在扩展时 应用
    (如果扩展则每个具体状态中也要增加相应状态应对行为的具体处理)

    类图:
    image.png

    经典应用:
    TCP connection
    根据不同的状态 决定怎么open、close
    image.png
    一个状态接口 聚合几种自定义的行为
    具体的状态类实现状态接口 重写方法 完成具体状态对应行为的反应
    具体的状态类 调用对应状态的方法

    代码举例
    image.png

    image.png

    image.png

    有限状态机(FSM)
    线程的状态迁移
    (与状态模式不相关,只是名字相像)
    image.png
    一个线程类 聚合了线程状态抽象类
    一个状态迁移的方法 根据action迁移 、其他的业务方法(run())
    具体的线程状态继承抽象总状态类 聚合线程类 根据action做相应的处理
    修改action属性 将当前线程对象传入下一种状态 (完成了状态迁移)
    每种状态的迁移 都是根据上一种状态和action 完成的

    代码举例
    image.png

    image.png

    image.png

    image.png

    image.png