【问题标题】:Is there a use case for having a class A contain an instance of class B, and B an instance of A?是否存在让类 A 包含类 B 的实例,而 B 包含类 A 的实例的用例?
【发布时间】:2022-12-18 01:06:01
【问题描述】:

这敲响了我脑海中“循环依赖”的警钟。但我想知道是否有已知的可接受用例。

只是为了用一些 Python 来说明:

class A:
    pass


class B:
    pass


a = A()
b = B()

a.b = b
b.a = a

我们能否证明这是某事的理想实施方式?换句话说,您会在一本优秀的编程书籍中找到推荐的这种模式吗?

【问题讨论】:

  • 您是否尝试运行上面的代码?除了循环依赖性之外,它是否运行或是否存在错误?
  • 一开始我没有,尝试后发现它没有运行,所以我修复了它……但它更像是一个理论示例,只是为了说明这个想法。

标签: class oop circular-dependency class-design


【解决方案1】:
  • 每辆车都有一个方向盘,每个方向盘都属于一辆车。
  • 每栋楼都有一个地址,每个地址都代表一栋楼。
  • ...

我认为问题是,你真的应该包含整个类,还是只是对它的引用? (老实说,我相信在大多数情况下参考应该足够了)

【讨论】:

  • “每辆车都有一个方向盘,每个方向盘都属于一辆车”。是的,我明白这一点,但也许像我建议的那样实施它并不明智……或者曾经有过吗?这就是问题所在。
猜你喜欢
  • 2016-07-27
  • 2014-12-06
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 2010-10-21
  • 1970-01-01
相关资源
最近更新 更多