ゆーたんのつぶやき読者になるゆーたんのつぶやき株式会社ノークリサーチにてIT関連のシニアアナリストとして活動しています。2004-10-04デリゲートとインターフェースITデリゲートとインターフェースはどちらも「仕様と実装の分離」という観点では良く似ています。C#においては言語仕様としてデリゲートもインターフェースも明確に規定されていますが、それらの使い分けに迷うことがあるかも知れません。ボクは両者を粒度の違いという観点から以下のように区別しています。・デリゲートは単独の関数を単位とする・インターフェースはあるオブジェクトを対象とした一連の操作の集合を単位とするJavaの場合は言語仕様としてデリゲートが規定されているわけではないので、デリゲートと同じことをやろうとした場合には実質的にはインターフェースを用いるのが一般的ではないかと思います。考えると仕様と実装の分離という観点に限っていえば、C#の方がよりきめ細かい粒度の選択ができるといえます。C#のデリゲートで便利なのは「+=」や「-=」といった演算子を使うことでデリゲートの登録・削除が容易に行える点です。クラスconsumerのデリゲートdoProcessに対して、クラスprovider1のデリゲート実装method1とクラスprovider2のデリゲート実装method2を追加したい場合には下記のように書けます。doProcess(provider2.method2);UIコンポーネントに対するイベントハンドラの登録・削除ロジックなどを組む際にはとても重宝しそうですね。TokyoのサイトでこのBlogの紹介が掲載されました。9はてなブログをはじめよう!dufresneさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。