使用观察者模式构建一个 ClearanceManager 和一些 Destroyables。IDestroyable 是一个用于观察者的接口,它包含方法 public void destroy() ClearanceManager 是观察者模式的主题。也许在这里使用 Singleton 来确保您的应用程序中只有一个 ClearanceManager 对象。
在 ClearanceManager 内部使用 Set(不是 List 以确保对象只能添加一次)
支持 addDestroyable(IDestroyable destoryable) 方法(可能还有 removeDestroyable 方法)。
在运行时,您需要一些析构函数仿真的类可以在 ClearenceManager 中自行注册。ClearenceManager.getInstance().addDestroyable(this);
ClearanceManager 有一个 doClearance() 方法,它应该只在 Main 方法的末尾调用。它迭代抛出私有 Set 并在每个 IDestroyable 对象上调用 destroy()。
这样做你可以模拟析构函数,而不使用它们,因为使用析构函数你正在失去对 myabe 所需对象的存在的控制。你不知道什么时候覆盖finalize,什么时候调用它。
也许,如果你不想在你的 Main 方法中调用 doClearance(),你可以在这里使用,但在这里,一个真正的析构函数 finalize()。因为 ClearenceManager 中有对所需对象的引用,所以它们不会首先被销毁。但也许 mhh,如果有交叉引用....最好不要使用 finalize,使用 doClearance() 并玩得开心:)