代码改变世界

观察者模式-最终话

2017-06-04 17:21  Dirichlet  阅读(189)  评论(0编辑  收藏  举报

优点

在 .NET 中实现 Observer 有以下优点:

  • 取消了依赖性。上述示例清楚地显示出 Album 和 BillingService 类之间的依赖性已经取消。

  • 提高了可扩展性。“.NET 中的观察器”示例说明了添加新类型的观察器是多么简单。Album 类是“开-闭”原则的一个例子,最初是 Bertrand Meyer 在 Object-Oriented Software Construction 第二版 [Bertrand00] 中编写的,它描述了一个易于扩充但不必修改的类。Album 类体现了这种原则,因为您可以添加 PlayEvent 的观察器,而不必修改 Album 类。

  • 提高了可测试性。“测试考虑事项”说明了您为什么可以不必对 BillingService 进行实例化就能测试 Album 类。测试验证了 Album 类能正确运行。测试还提供了如何编写BillingService 的出色示例。

缺点

如示例所示,Observer 的实现简单而直接。不过,随着委派和事件的数目不断增加,我们很难跟踪当事件触发时发生了什么情况。因此,代码变得很难调试,因为您必须在代码中搜索观察器。

 

 

 

 

参考文章:

http://msdn.microsoft.com/zh-cn/library/ms998543.aspx

http://msdn.microsoft.com/zh-cn/library/ff649896.aspx

http://msdn.microsoft.com/zh-cn/library/ms954621.aspx