1
我想实现几个缓存算法,其中一个可以在运行时替换另一个。C++接口返回一个引用 - 这是一个不好的做法吗?
所以我已经开始与描述的接口:
class ICache
{
public:
virtual ~ICache(){}
virtual const std::vector<SomeValue>& getSomeValues() const = 0;
virtual const std::vector<AnotherValue>& getAnotherValues() const = 0;
...
}
在这里,我的问题是 - 它是一个不好的做法,返回接口的参考?
这样的设计强制执行和暴露类实现它的内部实现(因为它“必须”将所有向量存储为成员)。
有没有更好的方法?
该类本身可以只存储引用或从其他地方按需获取它们。 –
这是一个很好的习惯,返回const引用没有问题,它很有效。 – Melkon
就像你确定的那样,你的缓存类超过了对这些值的任何外部引用,这是非常好的。但是,如果您想在运行时切换缓存类,那么这种情况总是如此。当然,假设你的Cache类在其生命周期结束时对缓存对象进行了尝试。你打算缓存什么样的对象? – MikeMB