使用委托在C#中实现的观察者模式?

时间:2009-06-21 06:40:28

标签: c# design-patterns events delegates observer-pattern

已经回答了一个问题In C#, isn't the observer pattern already implemented using Events?

它询问是否已使用事件在c#中实现了观察者模式。

虽然我得到了事件和观察者模式,但是观察者模式真的只是委托和事件是进一步的实现吗?

1 个答案:

答案 0 :(得分:28)

你是对的。事件只是一个代理,功能略有不同。所有观察者模式都可以通过代理实现,而无需触及event关键字。

您可能会对“event”关键字实际带来的内容感兴趣。

  • 事件可以是界面的一部分,而 常规代表字段不能
  • 外部课程无法调用事件, 但是常规代表可以
  • 事件具有可以覆盖的其他访问者(添加和删除),并为
  • 提供自定义功能

编辑:Here's a great writeup,在事件和代理之间进行IL代码比较。 (提示:它几乎相同)。