【发布时间】:2012-12-24 02:51:48
【问题描述】:
TruckStop 有一个 List(of TruckClass) 和一个名为 Weigh() 的方法。 TruckClass 需要调用 Weigh()。以下两种设计的优缺点是什么? TruckClass 具有对 TruckStopClass 的引用并调用 MyTruckStopClassReference.Weigh() 与。 TruckClass 引发由 TruckStopClass 处理的 TruckClass.Weigh 事件。
我已经读过,相互引用的对象不会影响 GC,但它需要每个 TruckClass 中的额外引用。在硬币的另一面,我读到事件处理程序也是引用,如果你不解开它们可能会导致问题。对此事的利弊/最佳实践/意见进行一点澄清或评论将不胜感激。
【问题讨论】:
-
我假设您只有一个带有一台或多台秤和许多卡车的卡车停靠站。尽可能坚持现实 - 卡车停靠站管理秤,因此您的 TruckStop 类必须在卡车上调用 GetWeigh()。你不能反过来,因为卡车不知道是否有可用的秤,或者知道是否不是他们的工作
-
Truck/TruckStop 是一个虚构的例子。更不用说卡车司机可以在决定称重之前先获得燃料。在“子类”必须触发“父类”的某些方法调用的情况下,我更关心对象相互引用与对象引发事件的优缺点。
-
一个缺点是孩子在不需要的时候与父母耦合。他们有单独的责任,应该这样对待。在这一点上讨论垃圾收集器是多余的......
-
先生。 Whitehead,您是说 Truck 对象中的 TruckStop 引用是由于耦合或两种情况导致的 Con?
-
与问题无关。我曾经有过这种情况。添加它们时,每个对象都会引用列表。尝试将同一个对象放入两个不同的列表时遇到了奇怪的问题。