前言
月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂)
央是一片海洋,海乃百川,代表着一块海绵(吸纳万物)
泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出)
月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容
希望大家一起坚持这个过程,也同样希望大家最终都能从零到零,把知识从薄变厚,再由厚变薄!
一、什么是状态模式?
状态模式是一种行为型设计模式,它允许对象在其内部状态发生变化时改变其行为。状态模式将状态和状态对应的行为封装在不同的类中,使得状态可以独立于对象而变化
二、状态模式的优缺点:
优点:
- 将状态和行为分离,使得状态转换更加清晰明确。
- 可以方便地增加、删除或修改状态,而不需要修改原有的代码。
- 改善了代码的可维护性和可扩展性,提高了代码的复用性。
- 使得代码更加易于测试,可以更加方便地进行单元测试。
缺点:
-
代码复杂性增加:状态模式需要定义多个状态和相应的行为,这可能会导致代码复杂性增加。
-
状态转换困难:状态模式的状态转换通常是硬编码的,这可能会导致状态转换变得困难。
-
不适合频繁变化的状态:如果状态经常变化,使用状态模式可能会导致性能问题。
三、状态模式的结构:
四、状态模式实战:
以上图为例,按照电梯的四种状态,开门(open),关门(close),启动(start),停止(end)来模拟状态模式:
1.创建状态类
2.创建环境类
3.创建具体状态类
4.测试
5.测试结果:
五.总结:
状态模式的应用场景:
-
订单状态管理:订单状态随着订单的不同阶段不断变化,可以使用状态模式来管理订单状态的转换。
-
游戏角色状态管理:游戏中的角色状态也会随着游戏进程不断变化,可以使用状态模式来管理角色状态的转换。
-
线程状态管理:线程的状态也会随着线程的运行状态不断变化,可以使用状态模式来管理线程状态的转换。
-
交通信号灯管理:交通信号灯的颜色也会随着时间不断变化,可以使用状态模式来管理信号灯状态的转换。
以及其他一些可用状态控制的场景.