我对处理类依赖的最佳方法存有疑问,我希望能就此问题得到一些反馈。
我们假设我有一个模拟地球电离层的课程
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"是或类似的?
非常感谢!
答案 0 :(得分:0)
shared_ptr
解决方案肯定是一个想法,但我也考虑存储弱引用。
如果只有EarthMagneticField
左右,你可以实例化它,然后构造所有其他对象并对其进行反射。
答案 1 :(得分:0)
如果EarthMagneticField
创建起来很便宜并且没有理由与代码的其他部分共享其状态,那么我可能会尝试使用选项1并让它拥有类{{1}的私有成员}}。你可以随时从这个选项开始,并在你需要时重构。
如果您确实需要共享EarthIonosphere
,我认为没有理由使用EarthIonosphere
并动态分配。我只想在new
之外创建一个并传递对EarthIonosphere
的构造函数的引用:
EarthIonosphere