C++常用设计模式之:状态模式

状态模式就是升级版的策略模式!它解决的也是程序中常见的条件可能变化的if/else或者switch/case语句,不同的是状态模式在状态发生改变时,其内部会使其指向下一种状态,无需调用者做出选择。这样解释好像还是太抽象了,算了,先看定义吧。状态模式的定义:允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。看看上面的定义,是不是更抽象了...还是用实际程序中例...
摘要由CSDN通过智能技术生成

状态模式就是升级版的策略模式!它解决的也是程序中常见的条件可能变化的if/else或者switch/case语句,不同的是状态模式在状态发生改变时,其内部会使其指向下一种状态,无需调用者做出选择。这样解释好像还是太抽象了,算了,先看定义吧。

状态模式的定义:允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。

看看上面的定义,是不是更抽象了...

还是用实际程序中例子来解释吧。我们在程序中会常常操作一个网络对象,比如一个TCP的操作,我们会调用诸如Start,Connect,Stop等等的操作,在进行完一个操作后,TCP对象的状态就会改变,这样下一次操作时我们会检测当前TCP对象是什么状态,然后再进行相应的操作。也是就是我们会根据当前TCP对象的状态来进行相应的操作。总之,要是按照正常的思路来写,就是一堆if/else。显然,如果这里的状态很多话,那写起来可就费劲了,搞不好就被自己绕晕了。这个时候就可以亮出状态模式了。

UML结构图如下:

下面我用伪码来表述上面的例子。

//先按照正常写代码的思路来写
//
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值