2010-12-20 9 views
1

イベントメカニズムを使用して、あるクラスから別のクラスへデータを渡す賛否両論は誰でも詳細に説明できますか?イベントを使用してデータを渡すのに最適な時期はいつですか?とりわけイベントをします使用はイベント処理を使用してデータを渡します

答えて

5

例を考えてみましょう。天気の変化のために、気象ステーションに20人が加入しているシステムがあります。あなたは気象ステーションが購読されているすべての人々とサービスを追跡してもらいたいですか?

私の意見では、気象局は天気の変化を待っている人やサービスについて何も知らないでください。気象ステーションはちょうどイベントを送信する必要があり、それを聞いている人は通知を受けます:-)

重要なのは、イベントを使用してオブザーバに、オブジェクトで発生したアクションまたは状態の変化を通知することです。オブザーバーは、オブジェクトについて何も知る必要がないため、異なるタイプのオブジェクトにすることができます。誰かがオブジェクトを聴くと、彼はそれを世話します。

1対1の関係で、何か起こるのを待っているオブジェクトが常に同じタイプの場合、その場合はイベントは必要ありません。

イベントは、上記の私の例で気象ステーションと同じように、システムのデカップリングにも最適です。気象ステーションは、それを聴いているサービスやユーザーについて知らなくても、単独で実行できます。

+0

+1これは優れた説明です。気象局の類推はこれを説明する素晴らしい方法です。 –

3

  • は、イベントレシーバ
  • からイベントソースをデカップルは
  • 複数のイベントの受信機が同じイベントにサブスクライブすることを許可し、イベンティング
  • を実装するためのよく知られたパターンを提供

デリゲートがコード内に予期しない "リーク"を作成する可能性があることの1つは、Memory Leak in C#です。

関連する問題