次の質問を見てください:継承よりも構成を優先する
受け入れられた回答者は、「メソッドを再利用し、委任を使用してそれらの一部を再実装することを避けるために、Hashtable を拡張します」と述べています。回答者が何を意味するのかわかりません:委任を使用してそれらのいくつかを再実装します。回答者 とはどういう意味ですか?
Delegates と Observer のデザイン パターンに精通しています。
次の質問を見てください:継承よりも構成を優先する
受け入れられた回答者は、「メソッドを再利用し、委任を使用してそれらの一部を再実装することを避けるために、Hashtable を拡張します」と述べています。回答者が何を意味するのかわかりません:委任を使用してそれらのいくつかを再実装します。回答者 とはどういう意味ですか?
Delegates と Observer のデザイン パターンに精通しています。
コンポジションを使用する場合、基になるクラスが持つメソッドをサポートする場合は、基になるクラスで同じメソッドを単に委任 (または使用) する独自の実装を定義する必要があります。この場合、単純な (委譲された) メソッドを書くことを避けるために継承を使用したくなるかもしれませんが、継承は実際には IS-A 関係が存在する場合にのみ使用する必要があります。
例えば、
public class Foo
{
public virtual void Bar()
{
// do something
}
}
public class InheritedFromFoo : Foo
{
// we get Bar() for free!!!
}
public class ComposedWithFoo
{
private Foo _foo;
public void Bar()
{
_foo.Bar(); // delegated to the Foo instance
}
}