C++ 状态模式

简述

状态模式(State Pattern)是行为设计模式之一。当对象根据其内部状态改变其行为时,将使用状态设计模式。

| 版权声明:一去、二三里,未经博主允许不得转载。

模式结构

UML 结构图:

C++ 状态模式_第1张图片

  • Context(上下文):定义一个与 Client 交互的接口。它维护对 ConcreteState 对象的引用,可以用该对象来定义当前状态。
  • State(抽象状态):定义接口,来声明每个 ConcreteState 应该做什么。
  • ConcreteState(具体状态):为 State 中定义的方法提供实现。

优缺点

优点:

  • 实现多态行为的好处是显而易见的,并且很容易添加状态来支持额外的行为。
  • 在状态模式中,对象的行为是其状态中函数的结果,并且在运行时根据状态改变行为,这就消除了对 switch/caseif/else 条件逻辑的依赖。
  • 可以提高内聚性,因为状态特定的行为被聚合到具体的类中,这些类被放在代码中的一个位置。

缺点:

  • 使用状态模式,必然会增加系统中类和对象的个数。
  • 由于状态模式的结构与实现较为复杂,一旦使用不当

你可能感兴趣的:(C++,设计模式)