オブザーバーパターンを使用して、ClearanceManagerといくつかのDestroyableをビルドします。IDestroyableは、メソッドpublic void destroy()を含むオブザーバーに使用されるインターフェースです。ClearanceManagerはObserverpatternのサブジェクトです。ここでシングルトンを使用して、アプリケーションにClearanceManagerオブジェクトが1つだけあることを確認してください。
ClearanceManager内で内部的にSetを使用します(オブジェクトを一度だけ追加できるようにするためのリストではありません)
addDestroyable(IDestroyable destoryable)メソッド(およびおそらくremoveDestroyableメソッド)をサポートします。
ランタイム中に、デストラクタエミュレーションが必要なクラスは、ClearenceManagerに自分で登録できます。ClearenceManager.getInstance()。addDestroyable(this);
ClearanceManagerにはdoClearance()メソッドがあり、Mainメソッドの最後で呼び出す必要があります。プライベートセットのスローを繰り返し、すべてのIDestroyableオブジェクトに対してdestroy()を呼び出します。
このようにすると、デストラクタを使用せずにデストラクタをエミュレートできます。デストラクタを使用すると、myabeに必要なオブジェクトの存在を制御できなくなるためです。いつ上書きファイナライズが呼び出されるかはわかりません。
MainメソッドでdoClearance()を呼び出したくない場合は、ここで使用できますが、ここでは、実際のデストラクタfinalize()を使用できます。ClearenceManagerには必要なオブジェクトへの参照があるため、最初に破棄されることはありません。しかし、相互参照がある場合は、多分mhh .... finalizeを使用せず、doClearance()を使用して、楽しんでください:)