设计模式----State(状态)模式
GoF:允许一个对象在其内部状态改变时,改变他的行为。对象看起来似乎修改了它的类。
在实际的程序开发中,我们经常会用到大量的if elseif else对某种状态进行切换,特别是用惯了结构化语言(C语言)的人。如果状态切换的情况反复出现,我们就可以考虑到采用State模式来代替程序中大量的if elseif else了。在大多数情况下,如果对象的属性不同那么相应得对象的行为要求也不同。对GoF给出的定义做个通俗的解释就是:一个对象在不同的状态下有不同的行为,也可以说对象的每个状态有着不同的行为。
下面给出事例代码(我的这个事例比较简单,但是能反映出State模式的意思):
下面是UML图:
小结:
State模式和Strategy模式非常的相像,如果不仔细追究,差别不是很大。如果用不好的话很容易将State模式退化成Strategy模式。





































































































































