状态模式

使用场景:主要用来消除if else这种多条件,主体是可枚举的状态,在实际应用中,比如开关灯,电梯上下这种简单场景,也可以用于有多种操作,各个操作与状态有关系,比如酒店订房。在电商场景中,订单状态跃升可以使用这种模式,总体说来,有多个平行状态且各个状态能进行跃迁的都可以考虑用这种模式。
类图:状态模式类图

Context:上下文环境,维护着一个当前状态。
state:状态的抽象类,包含具体操作(可多个,与当前状态无关的空实现即可),其中方法参数为context
ConcreteSate:具体状态类,包含实际操作及状态跃迁。

原理:通过将状态拆分成一个一个的类,减少具体if else判断。各个具体状态中包含本身操作及设置context中的状态并实现状态流转。一些有关联性操作的状态也可以用状态模式实现。但这样基础state类中就需要定义所有的操作接口。

优点:减少了if else的判断,代码结构清晰
缺点:局限性较大,适合范围有限,仅适合一些结构简单的场景。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值