您现在的位置是:首页 >技术杂谈 >设计模式 -- 状态模式网站首页技术杂谈

设计模式 -- 状态模式

月央泽 2023-06-26 00:00:02
简介设计模式 -- 状态模式

前言

月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂)

央是一片海洋,海乃百川,代表着一块海绵(吸纳万物)

泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出)

月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容

希望大家一起坚持这个过程,也同样希望大家最终都能从零到零,把知识从薄变厚,再由厚变薄!

一、什么是状态模式?

        状态模式是一种行为型设计模式,它允许对象在其内部状态发生变化时改变其行为。状态模式将状态和状态对应的行为封装在不同的类中,使得状态可以独立于对象而变化

二、状态模式的优缺点:

优点:

  1. 将状态和行为分离,使得状态转换更加清晰明确。
  2. 可以方便地增加、删除或修改状态,而不需要修改原有的代码。
  3. 改善了代码的可维护性和可扩展性,提高了代码的复用性。
  4. 使得代码更加易于测试,可以更加方便地进行单元测试。

缺点:

  1. 代码复杂性增加:状态模式需要定义多个状态和相应的行为,这可能会导致代码复杂性增加。

  2. 状态转换困难:状态模式的状态转换通常是硬编码的,这可能会导致状态转换变得困难。

  3. 不适合频繁变化的状态:如果状态经常变化,使用状态模式可能会导致性能问题。

三、状态模式的结构:

 

四、状态模式实战:

        以上图为例,按照电梯的四种状态,开门(open),关门(close),启动(start),停止(end)来模拟状态模式:

1.创建状态类

 2.创建环境类

3.创建具体状态类

 

 

 

 

4.测试 

 5.测试结果:

 

五.总结:

状态模式的应用场景:

  1. 订单状态管理:订单状态随着订单的不同阶段不断变化,可以使用状态模式来管理订单状态的转换。

  2. 游戏角色状态管理:游戏中的角色状态也会随着游戏进程不断变化,可以使用状态模式来管理角色状态的转换。

  3. 线程状态管理:线程的状态也会随着线程的运行状态不断变化,可以使用状态模式来管理线程状态的转换。

  4. 交通信号灯管理:交通信号灯的颜色也会随着时间不断变化,可以使用状态模式来管理信号灯状态的转换。

以及其他一些可用状态控制的场景.

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。