有了观察者模式,我们都知道,基于它的类图,SUBJECT 使用了对 OBSERVER 的引用。同时,OBSERVER 有一个对 SUBJECT 的引用,以便注册或删除自己。
这是“循环引用”吗?
有了观察者模式,我们都知道,基于它的类图,SUBJECT 使用了对 OBSERVER 的引用。同时,OBSERVER 有一个对 SUBJECT 的引用,以便注册或删除自己。
这是“循环引用”吗?
当然,这是一个循环引用。这是参考图中的一个循环。
在谈论更有害的事情时,有时会使用术语“循环引用”,特别是当你有循环依赖时(例如 A 需要 B 编译,但 B 需要 A 编译)。
循环引用本身是无害的(例如:循环链表)。
正如您所描述的,这是循环引用的情况。但是,请注意,在完整模式中,Observer
是一个抽象类/接口,它具有一个或多个具体实现。Observer
在某些变体中,它一无所知Subject
(尽管它的子类可能会引用它),在其他变体中,它可能依赖于Observable
接口或直接依赖于Subject
. 但是,Subject
只知道Observer
,而不知道它的具体子类。
所以引用不是(必然)循环的。