最近我发现有些类使用配置对象而不是通常的设置器方法进行配置。以下是一个小例子:
class A {
int a, b;
public:
A(const AConfiguration& conf) { a = conf.a; b = conf.b; }
};
struct AConfiguration { int a, b; };
优点:
- 您可以扩展对象并轻松地保证新值的合理默认值,而无需用户了解。
- 您可以检查配置的一致性(例如,您的类仅允许某些值的组合)。
- 通过省略设置器,您可以节省大量代码。
- 您可以为指定Configuration结构的默认构造函数提供默认构造函数,并使用
A(const AConfiguration& conf = AConfiguration())
。
缺点:
- 您需要在构建时知道配置,不能以后更改。
这种方法还有其他缺点吗?如果没有,为什么不经常使用它?