4
我的情况当两个类(姑且称之为一个和乙)是相互关联的(他们的方法依赖于另一个的数据),但IS-A关系是不恰当的。我可以使用组合,以便两个对象都具有存储其他对象的字段。但是这对我来说似乎很难看。我目前做的是通过组合物从甲和乙创建另一个类Ç包含的对象,并且当我想调用类A的方法,我通过对象乙。我的这种方法的问题:对象是相互需要对方
- 我需要一个对象传递给其他所以它开始像一个简单的函数参数,而不是通过面向对象的方法,其中的对象封装的数据
- 如果我需要改变东西,我可能要修改这两个类一个和乙,这是不是你有什么推荐一个好点的代码重用
的代码?
例
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
}
谢谢 佐尔坦
通常这不是一个好主意,让两个对象相互依赖。但是,如果没有你提供一些具体的信息/代码,很难再说更多。 –
相互组合不是一个好主意,而是一个线索,说明你的类是如此相关,也许它们必须只是一个具有A和B属性的类。但是,没有具体的代码是很困难的。 –
是的,它们是相关的,但是如果它们是一个类,那么我会有将几乎所有东西放到一个类中的诱惑,这在OOP中不是很有利。 –