策略类的配置

时间:2015-11-22 17:08:27

标签: c++ policy-based-design

我想知道配置策略的最佳做法是什么 政策性设计。定义了策略的接口 由其主机类。然而,它没有定义如何 接口需要实现。因此,政策可能会 需要不同的配置参数。但我只想 将一个配置(对象)提供给主机类。该 下面的代码是我到目前为止所做的草稿,但是 我不是很满意,因为它不能保证 没有命名冲突,也没有封装 不同政策的配置成员。

class Policy1 {
  template<class Config>
  Policy1(Config cp1) {
    /* Use policy1 config members */
  }
};

class Policy2 {
  template<class Config>
  Policy2(Config cp2) {
    /* Use policy2 config members */
  }
};

template <class P1, class P2>
class Host {

  template<class Config>
  Host(Config c) : p1(P1(c)), p2(P2(c)) {...}

  P1 p1;
  P2 p2;
};

struct Config {
  int configParam1; /* Used by policy 1  */
  int configParam2; /* Used by policy 2  but might also
                       be called configParam1
                     */
}

int main() {
  Host<Policy1, Policy2> h(Config());
  return 0;
}

如何防止配置对象中的名称冲突?有没有类似命名空间的机制?或者以某种方式更好地配置我的政策?

0 个答案:

没有答案