2009-06-21 43 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