平时写程序时,总少不了对某个被分装的很好的类中的成员变量进行访问,所以会写一些:
  void T::setXxx(Yyy v) {}
  Yyy T::getXxx() const
这样的代码,因为T类中有个Yyy类型的xxx成员变量,当有几个这样的成员变量需要写访问函数时,好多的函数定义真是让人烦透了,就算使用提供了方便模板的ide,也令人心烦,所以我有了以下想法,其实现实中的好多项目里早已运用了,这里只是提一下,如下代码:
struct State {
  union {
    int intV_;
    bool boolV_;
    char* rawStrV_;
    // other members
  };

  State(const int v) : intV_(v) {}
  State(const bool v) : boolV_(v) {}
  State(const char* v) : rawStrV_() {}
  // other ctors
};

enum StateType{
  ST_WINDOWED,
  ST_ACTIVED,
  ST_WIDTH,
  ST_HEIGHT,
  ST_VERSION
};

class Renderer {
public:
  void setState(StateType st, State v) {
    switch(st) {
      case ST_WINDOWED:
      { // ...
      }break;
      case ST_ACTIVED:
      { // ...
      }break;
      // ...
      default: assert(false);
    }
  }
  State getState(StateType st) const {
    switch(st) {
      default:
      case ST_WINDOWED: return windowed_;
      case ST_ACTIVED: return actived_;
      // ...
    }
  }
private:
  int w;
  int h;
  char* versionDescription_;
  bool windowed_;
  bool actived_;
};

非常简单明了!!!
优点:还是有些繁琐,但不用写一堆的函数定义体“{}”,这里只有两对;容易产生高效的代码
缺点:更改代码时,代码改动量较大
可以看出,这一管理策略正好与“状态管理”的接口语义一致,使人感觉非常轻量。