我处于这样的情况,即两个班级(让我们称之为 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
}
谢谢你, 佐尔坦
答案 0 :(得分:0)
"计算机科学中的所有问题都可以通过另一层间接解决,除了间接层太多的问题" - 大卫惠勒。
您尝试添加另一层间接但它没有解决您的问题。所以有一件事从根本上说是错误的。
以下是我的观点:
当你有2个彼此相互依赖的对象时,它可能意味着2个类应该合并为一个更大的类,这反过来会产生一个具有两者功能的更大的对象。
为什么不呢?有许多方法可以面向对象的方式为您的域名业务建模,而您的方法可能不再适合您的域名业务增长。