设计模式之状态模式(State)

状态模式:允许对象在内部状态改变时改变它的行为。

状态模式UML图:


将所有状态的行为(handle方法)抽象到State接口中,不同的状态处理这里接口行为时,有不同的实现。Context会将行为委托给当前的状态对象,具体的状态实现类可以自行设置成功或者失败后的状态。

如果有多个Context实例需要共享State,可将Context中的State设为静态变量。

虽然状态模式的类图与策略模式的类图几乎一样,但是他们本身的意图是不同的,形似神不似。

如果多种状态以一种相对固定的方式转移切换,不使用State模式也无妨,因为State模式会引入大量的状态子类,给系统带来复杂性。如果业务状态比较复杂,需要多场景的动态切换的话,使用State模式是一种比较好的方案。

参考资料:

Head First 设计模式 (中国电力出版社)

猜你喜欢

转载自ktian.iteye.com/blog/1315303
今日推荐