2009-06-21 73 views
11

有一個問題已經答案是In C#, isn't the observer pattern already implemented using Events?在C#中使用委託實現的觀察者模式?

它詢問觀察者模式是否已經在c#中使用事件實現。

雖然我得到的事件和觀察者模式,是不是觀察員模式真的只是代表和事件是一個進一步的實現?

+0

你能詳細說明你的問題嗎?你似乎意識到另外一個問題和答案,所以你似乎還在問一些除此之外的問題,但是我不清楚它是什麼。 – 2009-06-21 06:57:54

回答

28

你是對的。一個事件只是一個稍微不同的功能代表。所有的觀察者模式都可以與代表一起實施,而不必觸及event關鍵字。

然後您可能會對「事件」關鍵字實際帶入表中的內容感興趣。

  • 事件可以是界面的一部分,而 定期委託字段不能
  • 活動不能被外班, 但經常代表調用可以
  • 活動具有其他訪問(添加和刪除),您可以覆蓋並提供定製功能

編輯:Here's a great writeup與事件和代表之間的IL代碼比較。 (提示:它幾乎相同)。

+0

@womp感謝您的洞察文章 – TheVillageIdiot 2009-06-21 07:42:46