糖果----状态模式:

1.把这个东西跟数字电路里面的时序电路类比就很好理解,记住糖果机的例子也OK。

2.主要利用将每一个状态封装成一个类的办法,来使复杂的状态转换逻辑变得简单,而且容易扩展。利用了C++的多态性,状态机只要用当前状态指针调用当前状态的方法即可,不用关心各个状态的具体内部实现。这就造成了当状态机状态改变时,它的行为也改变了。它与一般多态的区别在于,对对象方法的调用会改变对象的当前状态,跟策略模式的主要区别也在于此。

3.这个模式主要适用于状态转换没有通用规律,而是来自于客户需求的情况,如果状态转换间有通用的规律,则不用将每个状态写成一个类,只要用通用的代码实现各个状态间的自动转换即可,比如AC自动机。
4.要选择状态机对修改关闭还是具体状态对修改关闭,根据实际情况而定。  
5.OO原则总结:if语句这个玩意儿效率不高,而且是扩展时最容易出错的一种,要尽量避免,如果代码中出现大量的逻辑判断,要开始考虑代码重构了,此时修改或增加任意一个分支都可能带来逻辑上的bug。
6.我把这个模式叫做糖果模式了。。。。。。

还是从网上下了一个类图:

转载于:https://www.cnblogs.com/icestream/archive/2011/08/09/2131783.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值