プログラミング中に、次の設計上の選択に何度も遭遇しました。ユーザーがオブジェクトを作成し、それを別のオブジェクトに渡し、第 2 段階で何らかの方法で処理します。
例として、レイトレーサーを想像できます。ユーザーは、特定のプロパティを使用して球体を作成し、 を呼び出しますraytracer.addTraceable(sphere)
。さて、これを行うには3つの方法が考えられます。
- レイトレーサーは、球体オブジェクトに割り当てられたメモリの割り当てを解除する責任を負います
- ユーザーは、球体オブジェクトに割り当てられたメモリの割り当てを解除する必要があります。
- レイトレーサーは球体オブジェクトをコピーするだけで、ユーザーとレイトレーサーの両方がローカル コピーの割り当てを解除します。
このような場合、一般的にどのような設計を選択するのが最善でしょうか? 私が言及したもの以外に他のオプションはありますか (スマート ポインターは含まれません)。
PS: オブジェクト指向のアプローチを使用しているときに、単純な C で同じ問題に遭遇しました。