【发布时间】:2009-03-05 06:45:30
【问题描述】:
我现在遇到过几次,我想知道解决循环引用的 OO 方法是什么。我的意思是 A 类有 B 类作为成员,而 B 又具有 A 类作为成员。
这方面的一个例子是类 Person,它的成员是 Person 配偶。
Person jack = new Person("Jack");
Person jill = new Person("Jill");
jack.setSpouse(jill);
jill.setSpouse(jack);
另一个例子是具有一些其他产品集合作为成员的产品类。例如,该集合可能是对该产品感兴趣的人也可能感兴趣的产品,并且我们希望在每个产品基础上维护该列表,而不是基于相同的共享属性(例如,我们不想只显示同一类别中的所有其他产品)。
Product pc = new Product("pc");
Product monitor = new Product("monitor");
Product tv = new Product("tv");
pc.setSeeAlso({monitor, tv});
monitor.setSeeAlso({pc});
tv.setSeeAlso(null);
(这些产品只是为了说明问题,问题不在于某些产品是否会相互关联)
一般来说,这在 OOP 中会是糟糕的设计吗?所有 OOP 语言都会/应该允许这样做,还是只是不好的做法?如果这是不好的做法,解决这个问题的最佳方法是什么?
【问题讨论】:
-
@Jon Limjap:感谢您纠正错字。
标签: oop