设计模式状态

Posted zjj911

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式状态相关的知识,希望对你有一定的参考价值。

状态模式



设计原则:遵循单一职责、依赖倒置、开闭原则
常用场景:一个对象在多个状态下行为不同,且这些状态可互相转换
使用概率:20%
复杂度:中
变化点:状态的种类
选择关键点:这些状态是否经常在运行时需要在不同的动态之间相互转换
逆鳞:无
相关设计模式
策略模式:二者的实现方式非常相似,策略接口与状态接口,具体的策略与具体的状态以及二者都拥有的上下文,如果看它们的类图
,会发现几乎一模一样,而二者不同的地方就在于,状态模式经常会在处理请求的过程中更改上下文的状态,
而策略模式只是按照不同的算法处理算法逻辑,而且从实际场景来讲,顾名思义,状态模式改变的是状态,策略模式改变的是策略


主要思想:
实际就是当前对象的状态(往往是一个或多个属性)不同,那么同样的方法执行结果是不同的
就是在方法内进行状态判断if else 的执行
注意是判断本对象的属性,而策略模式往往是根据传参来判断



public class MyStatue {
    private int status;

    public void setStatus(int status) {
        this.status = status;
    }

    public void doSomething() {
        if (status==1) {
            System.out.println("do1");
        } else if (status==2) {
            System.out.println("do2");
        } else {
            System.out.println("do another");
        }
    }
}

 

以上是关于设计模式状态的主要内容,如果未能解决你的问题,请参考以下文章

Golang设计模式——状态模式

SpringBoot技术专题-StateMachine状态机设计

Java 设计模式 状态模式

23种设计模式(十七)——状态模式状态变化

设计模式状态模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

设计模式之状态模式