用于简单静态数据的C ++体系结构

时间:2014-04-09 07:06:29

标签: c++ design-patterns

我的C ++项目中有一些静态数据类似于:

static const int kCount = 10000;
static int data[kCount];

我也有一些方法可以控制对这些数据的访问。例如:

// returns count of occurences of n in data
static int getCount(int n);

在这种情况下使用正确的代码架构是什么?

我目前正在使用命名空间(getCount不是静态的),但我猜测一个更有经验的C ++程序员可能会想出更好的设计。我考虑过使用所有静态方法的类。但是,在做了一些研究之后,听起来像命名空间是首选方式。

另一个细节:对data进行操作的一些方法应该与委托对象进行通信。我目前正在使用包含一些纯虚函数的IMyData之类的东西。然后我有static IMyData *delegate

1 个答案:

答案 0 :(得分:1)

如果你不考虑Mocking,那么只需使用命名空间来保存这些功能。 E.g。

namespace DataCounter {
  const int kCount = 10000;
  int data[kCount];

  // returns count of occurences of n in data
  int getCount(int n);
};

然后你可以调用像DataCounter::getCount()这样的函数。

如果您希望其他组件使代码更易于测试,请将IMyData视为接口,将其实现为TMyData,然后通过IMyDataMock模拟它(例如gmock)。