题
有了观察者模式,我们都知道,根据其类图,SUBJECT 使用对 OBSERVER 的引用。同时,观察者有一个对主题的引用,以便注册或删除自己。
这是“循环引用”吗?
解决方案
正如您所描述的,这是循环引用的情况。但是,请注意,在 完整的图案, Observer
是一个抽象类/接口,它有一个或多个具体实现。 Observer
在某些变体中一无所知 Subject
(尽管它的子类可能引用它),在其他变体中它可能依赖于 Observable
接口或直接在 Subject
. 。然而, Subject
只知道关于 Observer
, ,而不是它的具体子类。
因此,引用(不一定)不是循环的。
其他提示
当然,这是一个圆形参考。这是参考图中的一个周期。
不过,在谈论更有害的事情时,使用“循环引用”一词有时会发生,尤其是当您有循环时 依赖性 (例如,需要b来编译,但是B需要A来编译)。
循环引用本身并不有害(例如:循环链接列表)。
不隶属于 StackOverflow