c ++ CoW,继承类和变量共享数据的设计模式?

时间:2010-05-08 19:34:24

标签: c++ design-patterns

我设计了一个写时复制基类。该类保存共享数据模型/ CoW模型中所有子项所需的默认数据集。

派生类还包含仅与它们相关的数据,但应该是该派生类的其他实例之间的CoW。

我正在寻找一种干净的方式来实现这一点。如果我有一个基类FooInterface与共享数据FooDataPrivate和派生对象FooDerived。我可以创建一个FooDerivedDataPrivate。

底层数据结构不会影响公开的getter / setters API,因此它与用户如何与对象进行交互无关。我只是想知道这是否是这种情况的典型MO或者是否有更好/更清洁的方式?

让我感兴趣的是,我看到私有数据类之间的继承潜力。例如。 FooDerivedDataPrivate:public FooDataPrivate,但我没有看到在派生类中利用该多态的方法。

class FooDataPrivate
{
public:
  Ref ref; // atomic reference counting object
  int a;
  int b;
  int c;

};

class FooInterface
{
public:
  // constructors and such
  // ....

  // methods are implemented to be copy on write.
  void setA(int val);
  void setB(int val);
  void setC(int val);

  // copy constructors, destructors, etc. all CoW friendly
private:
  FooDataPrivate *data;

};

class FooDerived : public FooInterface
{
public:
  FooDerived() : FooInterface() {}

private:
  // need more shared data for FooDerived
  // this is the ???, how is this best done cleanly?
};

1 个答案:

答案 0 :(得分:1)