拥有Observer模式,我们都知道基于其类图,SUBJECT使用对OBSERVER的引用。同时,OBSERVER提到了SUBJECT,以便注册或删除自己。
这是“循环参考”吗?
答案 0 :(得分:2)
当然,这是一个循环参考。这是参考图中的一个循环。
使用术语“循环引用”有时会在讨论更有害的事情时发生,特别是当你有循环依赖时(例如A需要B来编译,但B需要A来编译)。 / p>
循环引用本身无害(例如:循环链表)。
答案 1 :(得分:1)
正如您所描述的那样,这是一个循环引用的案例。但请注意,在the full pattern中,Observer
是一个抽象类/接口,它有一个或多个具体实现。 Observer
在某些变体中对Subject
一无所知(尽管其子类可能引用它),在其他变体中,它可能取决于Observable
接口或直接取决于Subject
。但是,Subject
只知道Observer
,而不是它的具体子类。
因此引用不是(必然)循环。