IOC,观察者模式,项目的实际应用2011-01-25 cnblogs try一、概述:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。[GOF 《设计模式》]看了Terrylee的.NET设计模式(19):观察者模式(Observer Pattern),个人认为其模式的推导比较清晰,但感觉举的例子不是很好,和实际项目还是有些脱离。正好手上有一小项目应用了此模式,不知应用的是否正确,如果理解的不到位,请大家指正。此文算是对.NET设计模式(19):观察者模式(Observer Pattern)的一个补充吧,不知Terrylee是否允许。二、观察者模式结构图:

三、实际列子:一监控系统,需要根据系统某些变化报警,报警方式有Email、短信等多种,以后可能会变化。怎么演绎到观察者模式就不再多说了(如果需要的话再补充,一般参考Terrylee的文章即可明白)。

IAlarm是报警接口。当我们的系统需要添加报警方式的时候只需实现IAlarm的Warn方法即可。Email类是Email报警的实现,SMS类是短信报警的实现。MonitorContainer是监视器(抽象类)相当于观察者。只负责通知变化,当子类调用Notify方法它即会通知报警模块报警,如Email和SMS(短信)。NetMonitor是其中的具体的监控模块,继承于MonitorContainer。当发现系统网络有问题时会调用父类的Notify方法。MonitorContainer里的AddAlarm这里就省略了(把报警模块对象加入到ArraryList中)Notify方法就是foreach下报警模块对象集合。(可参考.NET设计模式(19):观察者模式(Observer Pattern)文章里的代码)