《设计模式》之状态模式

1、定义

允许一个对象在其内部改变时改变它的行为,从而使对象看起来改变了其行为。

2、动机

  1. 某些对象的状态如果改变,其行为也会随之而发生改变。比如文档的只读状态和读写状态的行为可能完全不同。

3、类结构

在这里插入图片描述
State类:抽象状态类,封装状态行为对应的接口。
StateA、StateB和StateC类:每个类对应一种具体的状态。
Context类(即状态管理类):客户端与状态类上下文类,提供客户需要的接口。封装状态的具体变化逻辑。

4、优点

  1. 封装转换过程,也就是转换规则
  2. 枚举可能的状态,因此需要事先确定状态种类

5、总结

  1. State模式将所有与一个特定状态相关的行为都放入一个State的子类对象中,在对象状态切换时,切换相应的对
    象;但同时维持State的接口,这样实现了具体操作与状态转换之间的解耦。
  2. 为不同的状态引入不同的对象使得状态转换变得更加明确,而且可以保证不会出现状态不一致的情况,因为转
    换是原子性的——即要么彻底转换过来,要么不转换。
  3. 如果State对象没有实例变量,那么各个上下文可以共享一个State对象,从而节省对象开销。

6、代码实现(C++)

状态模式源代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值