我有几个复杂的类,它们是使用从要创建的类继承的单独的创建者类构造的。
一个示例可能是由无序数据构建的图。
class Graph{
//....
public:
void showData();
protected:
std::vector<std::pair<int,int> > mConnectedData;
}
class GraphCreator:private Graph{
public:
//...
void construct();
private:
std::map<double,int> mSomeHelperContainer;
//...
}
对于构造,我需要许多辅助函数和辅助数据,我将它们放在另一个类 GraphCreator 中。由于许多与图形相关的函数也是必需的,而且我在任何情况下都需要图形的数据,所以我使用私有继承。由于这绝不是著名的 is-a 关系,而且由于私有继承通常被认为是不良设计的暗示,我有一些疑问:这是一个好主意,是设计工厂的一种适当方式,还是有一些我认为的主要缺点?有没有想过?设计这样一个工厂的更好方法是什么?
编辑:
感谢您到目前为止的答案!一些附加信息,使当前使用的方法的原因更清楚。我不能使用静态创建方法(Creator 中的状态变量太多)并且我有另一个约束:我想在库中向其他人提供独立于创建者的 Graph(例如,连同从文件读取方法)。那些不应该关心创造者。因此我也有点不确定朋友的使用情况,因为它在 Graph 类中添加了代码。