2019-08-30 【设计模式】状态模式

2019-09-30  本文已影响0人  持刀的要迟到了

7.4.3 状态委托

接下来,我们在主角类中定义一个指针变量,让它指向当前的状态。我们把之前那个很大的switch去掉,并让它去调用状态接口的虚函数,最终这些虚方法就会动态的调用具体子状态的相应函数。

状态委托看起来很像策略模式和类型对象模式(第13章)。在这三个模式中,你会有一个主对象委托给另外的附属对象
它们的区别主要在于目的不同:

  • 策略模式的目标是将主类与它的部分行为进行解耦
  • 类型对象模式目的是使得多个对象通过共享相同类型对象的引用来表现出相似性
  • 状态模式的目标是通过改变主对象代理的对象改变主对象的行为

功能更加完备的系统可能会让一个状态机来处理输入,以便另外一个状态机不会接收到输入。这样将能防止两个状态机对同一输入进行错误的响应。

上一篇 下一篇

猜你喜欢

热点阅读