【问题标题】:Is this called "Circular Reference"?这叫做“循环引用”吗?
【发布时间】:2011-04-27 12:18:15
【问题描述】:

有了观察者模式,我们都知道,根据它的类图,SUBJECT 使用对 OBSERVER 的引用。同时,OBSERVER 有一个对 SUBJECT 的引用,以便注册或删除自己。

这是“循环引用”吗?

【问题讨论】:

    标签: design-patterns observers


    【解决方案1】:

    当然,这是一个循环引用。这是参考图中的一个循环。

    在谈论更有害的事情时有时会使用术语“循环引用”,特别是当您具有循环依赖项时(例如,A 需要 B 编译,但 B 需要 A 编译)。

    循环引用本身并无害(例如:循环链表)。

    【讨论】:

      【解决方案2】:

      正如您所描述的,这是循环引用的情况。但是请注意,在the full pattern 中,Observer 是一个抽象类/接口,它具有一个或多个具体实现。 Observer 在某些变体中对Subject 一无所知(尽管它的子类可能引用它),在其他变体中它可能依赖于Observable 接口或直接依赖于Subject。然而,Subject 只知道Observer,而不知道它的具体子类。

      所以引用不是(必然)循环的。

      【讨论】:

      • “参考”这个词太重了。即使在模式的纯形式中,对象引用中的循环通常也存在(除非观察者将引用扔给主体,这在实践中通常不会发生)。
      • @Mark,这个词确实超载了。 IMO 在这里我们谈论的是接口/类之间的依赖关系。在这种情况下,我认为 Observer 本身没有循环性。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-25
      • 2014-12-04
      相关资源
      最近更新 更多