处理类依赖关系的指南

时间:2015-03-11 17:38:52

标签: c++ class design-patterns

我对处理类依赖的最佳方法存有疑问,我希望能就此问题得到一些反馈。

我们假设我有一个模拟地球电离层的课程

class EarthIonosphere {
    // Methods that implement physical models of the Earth's ionosphere
}

要在EarthIonosphere内进行一些计算,我可能需要了解地球磁力模型的价值。因此,我有一个独立的课程:

class EarthMagneticField {
    // Methods that implement physical models of the Earth's magnetosphere
}

EarthIonosphere可能取决于EarthMagneticField(但不是相反)。顺便说一句,代码的其他部分也可能需要EarthMagneticField。考虑到这一点,我想知道哪个是解决这种依赖关系的最佳解决方案(在可重用性和可维护性方面)。我考虑的两个选项是:

  • EarthIonosphere包含类EarthMagneticField的私有/公共成员,但如果必须在代码的其他部分使用相同的EarthMagneticField,我会担心重复。
  • EarthIonosphere包含一个std::shared_ptr,指向已使用EarthMagneticField运算符实例化的类new的对象。这将允许我使用完全相同的对象来计算代码的其他部分中的磁场。

你认为这些中的任何一个都是"清洁代码"?否则,你有什么建议吗?#34; interface"是或类似的?

非常感谢!

2 个答案:

答案 0 :(得分:0)

shared_ptr解决方案肯定是一个想法,但我也考虑存储弱引用。

如果只有EarthMagneticField左右,你可以实例化它,然后构造所有其他对象并对其进行反射。

答案 1 :(得分:0)

如果EarthMagneticField创建起来很便宜并且没有理由与代码的其他部分共享其状态,那么我可能会尝试使用选项1并让它拥有类{{1}的私有成员}}。你可以随时从这个选项开始,并在你需要时重构。

如果您确实需要共享EarthIonosphere,我认为没有理由使用EarthIonosphere并动态分配。我只想在new之外创建一个并传递对EarthIonosphere的构造函数的引用:

EarthIonosphere