设计模式最重要的一个原则是封装变化。
一个对象如果有不同的状态,在不同状态下有不同的行为。
正常情况下,我们会用if和else语句来处理。可是,如果状态很多了,那么就会有非常多的if和else了。系统扩展性差。
State模式最重要的就是将变化的状态和行为封装起来。
原本Context中有一个表示状态的常量。
现在,在Context对象中维护一个State对象。在所有与State有关的request方法中调用State的handle方法即可,即委托给自己维护的State对象来处理。
使用State模式,要注意拥有不同状态的对象可以接受的请求(消息)是一致的。
至于如何切换状态,可以由State维护,也可以由Context来维护。