【问题标题】:Two way composition a good design to establish communication between objects of two different classes?两种方式组合一个好的设计来建立两个不同类的对象之间的通信?
【发布时间】:2013-07-05 13:16:59
【问题描述】:

让一个类引用另一个类(组合),而该类又引用同一个类,这是一种好的 OOD 做法吗?

ClassA ----->ClassB 和 ClassB ----->ClassA ??

通过这种关系,我可以从 B 更改对象类 A 的状态,反之亦然。这是在对象之间建立通信的良好设计模式,还是有不同的首选方法?

【问题讨论】:

    标签: oop composition


    【解决方案1】:

    这样的关系是循环依赖。就其本身而言,它只有缺点。它可以阻止许多垃圾收集器死在他们的轨道上。释放对象需要 A 和 B 的客户端之间进行协商,因为 A 的所有客户端本质上也是 B 的客户端,反之亦然。

    鉴于这种相互依赖关系,您可能应该引入另一个管理相互依赖对象集合的对象。客户都可以和经理协商,决定什么时候完成,什么时候可以释放资源。

    为避免此问题,请将对象的引用作为函数参数(或类似的瞬态、本地状态)在上下文中传递,而不是使用持久成员。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 2012-12-25
      • 1970-01-01
      相关资源
      最近更新 更多