委任の「ユースケース」は、継承の場合とほぼ同じです。つまり、クラスの振る舞いを多態的に拡張します。そのタスク
ソフトウェア工学で
、委任パターンは、オブジェクト指向プログラミングにおけるデザインパターンがどこにある代わりに規定されたのいずれかのタスクを実行するオブジェクトは、代表者:wikipediaが委任を定義する方法
はこれがありますヘルパオブジェクトに関連付けられます。委任者として知られるヘルパーオブジェクトに委任者のタスクを実行する責任が与えられている責任の反転(Inversion of Responsibility)があります。委任パターンは、構成(アグリゲーションとも呼ばれる)、ミックスイン、およびアスペクトなどの他のソフトウェアパターンの基礎となる基本的な抽象パターンの1つです。
、明らかに、委任と継承されているが、最大のものの間に多くの相違点は、IMO、その継承は、2つのクラス間の固定(別名、コンパイル時)の関係は、ある代表団は、実行時にそこに定義することができますされている間(これをサポートする言語で)時間。一方、継承は多型性をよりよくサポートします。
委任は大きなトピックです(継承がそうであるように)、あなたはそれについてたくさん読むことができます。最後に、委任または継承を使用するかどうかを決めることは、「is-a」または「has-a」関係を望むかどうかを決めることになるため、その選択のガイドラインをリストするのは簡単ではありません。私にとって
、基本的には、デリゲートを作成するという決定は、観察から来ている:私のコードは、共通の「自然を持つものとして認識できる(ここでは、均質な手段均質な行動の集合を提示し
");
これらのビヘイビアは、特定のケース(「in」のように「代替」ビヘイビアに置き換えられる)で「カスタマイズ」されている可能性があります。
これは私の個人的な見解であり、「委任」パターンを特定する方法の説明です。おそらく、私のプログラミング規律はリファクタリングの原則によって強く知らされているという事実と関係があります。
本当に、IMOは、あなたのクラスのための "カスタマイズ"ポイントを定義する方法です。例として、ある種の抽象的なワークフローがある場合は、各ステップで特定の条件に応じて何らかのアクションを取ることができます。さらに、これらの具体的な行動を他の種類のものに置き換えることができれば、私はそこに代表団を通じて再利用のチャンスがあると思う。
これが役に立ちます。