多くの依存オブジェクトの削除をトリガーとして、オブジェクトの削除を設計する最良の方法を知りたいと思います。多くの依存オブジェクトを持つオブジェクトを削除するためのOOP設計
ここは例です。 Employerクラスがあります。雇用者が削除されると、そのすべてのジョブ、請求書が削除されます。ジョブが削除されると、カテゴリ選択も削除されます。等々。だから、あなたが削除することがわかるように、もっと多くのオブジェクトでEmployerが削除をトリガーします。問題は、従属オブジェクトの削除に必要な多くの引数をEmployerクラスのdeleteメソッドに渡す必要があることです。
ここでは簡単な例を示します。メインクラスを想像してみてください。メインオブジェクトが削除されると、オブジェクトDep1、Dep2も削除する必要があります。 Dep1が削除されると、Dep11も削除する必要があります。削除メソッドがDep1.delete(arg1)、Dep2.delete(arg2)、Dep11.delete(arg3)の場合、Mainのdeleteメソッドは次のようになります:Main.delete(arg1、arg2、arg3) 。分かりますか?多くのオブジェクトはメインに依存しています - 削除のためにはもっと多くの引数が必要です。
私はデータベースからの削除、つまり「ビジネスロジック」の意味での削除に興味があることを指摘しておきます。私はdeleteメソッドで "deleted"オブジェクトの設定を解除していません。私が検討しているどのようなオプション
:別のオブジェクトに削除のために必要な引数をグループ化
- 。私はこれらの議論がどのようにグループ分けされるのか分かりません。彼らは単に一緒に属しません。たとえば、Invoice_searcherとJob_searcherが必要な場合、なぜそれらは1つのオブジェクトにまとめられますか?それはどんな物体ですか?
- Employerクラスのdeleteメソッドから従属オブジェクトの削除を移動します。この場合、明示的に子のdeleteメソッドを呼び出さないと、システムは矛盾した状態になります。私はそれを避けたいと思います。一度uはあまり参考に自動的になり、従業員の参照が少なく、他の作るような方法で組成物を用いることが
あなたの質問にお答えして申し訳ありませんが、Udi Dahanは「削除」という言葉の優れたブログを投稿しました:http://www.udidahan.com/2009/09/01/dont-delete-just-dont/ – Kane
That's興味深い見解ですが、私の問題を解決せず、「削除しない」ことについて議論することは、この質問の文脈から外れています。 –
依存オブジェクトの削除にはどのような引数が必要ですか? 'object.deleteYourself()'は他の入力を必要としないはずのかなり簡単な指示のようです。 – MrMisterMan