我处于两个类(我们称 A 和 B )彼此相关(它们的方法依赖于另一个类的数据)但IS-A 关系不合适的情况。我可以使用组合,这样两个对象都有存储另一个对象的字段。但这对我来说似乎很丑陋。我目前所做的是通过组合创建另一个类 C ,其中包含来自 A 和 B 的对象,当我想调用 A 类的方法时,我传递了对象 B 。我对这种方法的问题:
您有什么推荐的吗?
示例
class Mesh:
method: plot(this, Solver)
{
plot data from class Solver // need to pass a Solver object, so the class is not self-contained
}
method: intersect(this, Domain)
{
do sth // depends on Domain, so we need to pass it
}
class Domain:
method: plot(this)
{
plot data from own data // no problem
}
method: selectVertex(this, Mesh)
{
do sth // depends on Mesh, so we need to pass it
}
谢谢,
佐尔坦
最佳答案
“计算机科学中的所有问题都可以通过另一个间接层次来解决,除了太多间接层次的问题” - David Wheeler。
您尝试添加另一个间接层,但它没有解决您的问题。所以有一件事从根本上是错误的。
这是我的观点:
当你有 2 个相互依赖的对象时,这可能意味着 2 个类应该合并成一个更大的类,这反过来又产生一个更大的对象,它具有两者的功能。
为什么不?有很多方法可以以面向对象的方式为域业务建模,随着域业务的增长,您的方法可能不再适用。
关于oop - 相互需要的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36850001/