Linux学习|Gentoo/Arch/FreeBSDLinuxLinux学习之路

大话设计模式读书笔记-16状态模式

2020-04-10  本文已影响0人  QuietHeart
bigtalk.jpg

第16章 无尽加班何时休——状态模式

概念

当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

状态模式其实就是将系统用不同状态表示,在不同状态进行不同行为。状态用对象实现具体行为、亦随着行为的进行状况,可对系统进行状态更新、切换等。

场景

状态模式应用场景是一个对象状态转换的条件过于复杂之时。它用于将复杂的判断逻辑简化,将状态判断的复杂逻辑转移到一系列类当中。

实现

如果没有状态,那么所有不同状态的事情都在某个条件分支中进行,函数会过于庞大复杂并且增加减少状态时需要修改整个函数也容易修改出错。

有了状态,每个分支的工作放到不同状态对象中,分支间的判断在每个状态切换中进行, 在增加修改状态时,只需修改相关部分,满足了更好的开放封闭原则。

类图如下:

img

客户端代码:

img

当一个对象的行为取决于它的状态,并且运行时必须时刻根据状态改变它的行为时,就可以考虑用状态模式了。

上一篇 下一篇

猜你喜欢

热点阅读