これが factory の正しい使い方です。Factory は、オブジェクトを作成する方法であるだけでなく、「これらの種類のオブジェクトには特別な初期化が必要です」と言う方法でもあります。あなたの問題では、廃棄などのイベントを工場に通知するのが最善の解決策だと思います。したがって、オブジェクトの作成は次のような方法で行われます。作成、新しく作成されたオブジェクトのイベントにファクトリをサブスクライブします。オブジェクトが削除されるたびに、それをファクトリに通知し、必要なアクションを実行します。
これをファクトリに入れたくない場合は、DeathKeeper などの他のオブジェクトに委譲することができます ;-)。したがって、コードは次のようになります。
//Inside factory create method
MyObject obj = GetNewInitializedObject();
_detahKeeper.RegisterObject(obj);
return obj;
オブジェクトを削除する必要があるたびに、オブジェクトはデスキーパーに通知し、すべての破棄ロジックを作成します。ところで、それがどのように機能するのかはわかりませんが、IDisposable インターフェイスを使用して、オブジェクトが保持するリソースを破棄するためのカスタム ロジックを実行できます。決定は、プロジェクトに何があるかに依存し、あなた次第です。