集約、封じ込め、委任の違いは何ですか?
3 に答える
これに COM のタグを付けたので、COM がこれらの用語をどのように使用しているかを尋ねていると思います.COM 用語では、一般的に使用される場合よりもやや具体的なものを意味します.
便利なことに、MSDN にはこれらを定義するページがあります。簡単に要約します。
包含/委任- 1 つの外部オブジェクトが内部オブジェクトを所有 (包含) し、使用 (委任) する場合。2 つのオブジェクトは、別個の ID と別個のインターフェースのセットを維持します。
集約- 2 つ以上の COM オブジェクトが本質的にインターフェイスをプールし、単一の COM オブジェクトであるかのように動作する場合。クライアント コードは、単一のオブジェクトのように見えますが、実際には他のオブジェクトの「集合体」を処理しています。
集約は通常、あるオブジェクトが別のオブジェクトからインターフェイスのセットを「継承」する場合に使用されます。ただし、実装はやや複雑です。COM では、オブジェクトの任意のインターフェイスから他のインターフェイスに QI できる必要があるため、関連するさまざまなオブジェクトが連携して、いずれかのオブジェクトの任意のインターフェイスから QI を実行できるようにする必要があります。他の任意のインターフェイスに対しては、参照カウントが両方のオブジェクトで機能します。
コンテインメントは、別のクラス/タイプのオブジェクトであるデータ メンバーを持つ 1 つのクラスの概念を表します。
委任は、あるクラスが別のクラスを使用してタスクまたは目標を達成するという考えを表します。
委任は通常、封じ込めによって達成されます