观察者模式——删除主题(主题何时被垃圾收集器删除)

Observer pattern - delete subject (when is the subject deleted by garbage collector)

我有一个 class subject 实现了多个“可观察”接口,我需要删除这个 主题。因为在 Java 中你不是自己删除对象(垃圾收集器为你做)我需要删除对该对象的所有引用(所以我需要取消订阅所有 observers) 创建取消订阅所有观察者的方法 delete 是否正确?或者有没有更好的方法(我试过 google 但我没有找到任何东西)

换句话说,谁能告诉我垃圾收集器什么时候会删除主题?

很难判断对象何时会被垃圾收集器删除。对我来说,这取决于您使用的 GC。 因此,如果一个对象没有引用,它确实有资格进行垃圾回收,但您不会确切知道它何时会真正发生。

现在,要给出关于您的可观察模式的答案,您将需要创建一个方法 deleteObservers 来删除对该主题的引用。我不知道你是如何实现这个模式的,Java class Observable 有这个方法,但是自 Java 9.

之后这个方法就被弃用了