【发布时间】:2011-01-02 00:47:41
【问题描述】:
我需要一个类的模拟实现 - 用于测试目的 - 我想知道我应该如何最好地做到这一点。我可以想到两种一般的方法:
- 创建一个包含类的所有公共函数作为纯虚函数的接口,然后通过派生它创建一个模拟类。
- 将所有函数(嗯,至少所有要模拟的函数)标记为虚拟。
我习惯于在 Java 中使用第一种方式,这也很常见(可能是因为它们具有专用的接口类型)。但我几乎从未在 C++ 中看到过如此繁重的接口设计,因此我想知道。
第二种方法可能会起作用,但我不禁认为它有点丑陋。有人这样做吗?
如果我遵循第一种方式,我需要一些命名帮助。我有一个音频系统,负责加载声音文件和播放加载的曲目。我为此使用 OpenAL,因此我将接口称为“Audio”,将实现称为“OpenALAudio”。但是,这意味着所有特定于 OpenAL 的代码都必须进入该类,这感觉有点限制。另一种方法是保留类的名称“Audio”并为接口找到不同的名称,例如“音频接口”或“IAudio”。你会建议哪一个,为什么?
【问题讨论】: