状态模式
来源:互联网 发布:arp ip 对应mac地址 编辑:程序博客网 时间:2024/06/11 00:16
使用场景:主要用来消除if else这种多条件,主体是可枚举的状态,在实际应用中,比如开关灯,电梯上下这种简单场景,也可以用于有多种操作,各个操作与状态有关系,比如酒店订房。在电商场景中,订单状态跃升可以使用这种模式,总体说来,有多个平行状态且各个状态能进行跃迁的都可以考虑用这种模式。
类图:
Context:上下文环境,维护着一个当前状态。
state:状态的抽象类,包含具体操作(可多个,与当前状态无关的空实现即可),其中方法参数为context
ConcreteSate:具体状态类,包含实际操作及状态跃迁。
原理:通过将状态拆分成一个一个的类,减少具体if else判断。各个具体状态中包含本身操作及设置context中的状态并实现状态流转。一些有关联性操作的状态也可以用状态模式实现。但这样基础state类中就需要定义所有的操作接口。
优点:减少了if else的判断,代码结构清晰
缺点:局限性较大,适合范围有限,仅适合一些结构简单的场景。
阅读全文
1 0
- 状态模式(状态变化)
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 5种排序算法的js代码(1)
- 如何用OpenCV训练自己的分类器
- struts2基本用法
- PID闭环自动控制直流电机速度
- Microsoft Visual Studio 2017 Supports Intel® AVX-512
- 状态模式
- android:app_process两种用法
- mybatis中的#和$的区别
- two weeks vim(3)
- 判断一棵树是否是完全二叉树
- SpringBoot定时任务@EnableScheduling和cron表达式
- 线程安全无处不在
- libtest.a: could not read symbols: Archive has no index; run ranlib to add one的原因和解决方案
- 如何在SpringBoot下读取自定义properties配置文件