3 相关模式
(1)状态模式和策略模式
这是两个结构相同,功能各异的模式,具体的在策略模式里面讲过了,这里就不再赘述。
(2)状态模式和观察者模式
这两个模式乍一看,功能是很相似的,但是又有区别,可以组合使用。这两个模式都是在状态发生改变的时候触发行为,只不过观察者模式的行为是固定的,那就是通知所有的观察者;而状态模式是根据状态来选择不同的处理。从表面来看,两个模式功能相似,观察者模式中的被观察对象就好比状态模式中的上下文,观察者模式中当被观察对象的状态发生改变的时候,触发的通知所有观察者的方法就好比是状态模式中,根据状态的变化选择对应的状态处理。但实际这两个模式是不同的,观察者模式的目的是在被观察者的状态发生改变的时候,触发观察者联动,具体如何处理观察者模式不管;而状态模式的主要目的在于根据状态来分离和选择行为,当状态发生改变的时候,动态地改变行为这两个模式是可以组合使用的,比如在观察者模式的观察者部分,当被观察对象的状态发生了改变,触发通知了所有的观察者以后,观察者该怎么处理呢?这个时候就可以使用状态模式,根据通知过来的状态选择相应的处理。
(3)状态模式和单例模式
这两个模式可以组合使用,可以把状态模式中的状态处理类实现成单例
(4)状态模式和享元模式
这两个模式可以组合使用。由于状态模式把状态对应的行为分散到多个状态对象中,会造成很多细粒度的状态对象,可以把这些状态处理对象通过享元模式来共享,从而节省资源。