本人认为观察者模式和C#中委托的功能是相似的,但。。。机制很不一样。。。可以参看我写的C# 委托机制一文。观察者模式和委托都是在一对多的情况下,当事件发送者产生事件后,由观察者接收,并产生相应的动作(虽然都是同一接口,但。。。实现却是在内部,所以,我叫你吃饭,你可以去吃麻辣烫)。
当然,你还可以绑定多个事件处理方法。在这里,我举个例子,一个出版社和各分销商的例子。各分销商是观察者。作为出版社的分销商,他是需要在出版社注册备案的。即有个方法,要在出版社方,我们定位Register方法,这个方法的接口,是ISubject 下的抽象方法(实现这个接口的类就是目标类即Subject)。另外,出版社的任何动态,比如出新书,都需要即时通知分销商的。所以,要建立这个通讯机制,就需要一个接口,来保证实现这个接口的所有对象,都能被出版社通知到。就有了个Notice这个方法,当然,他也是包装在一个接口内的。好了,这下,当事件的目标一旦有了消息,就会调用其中的方法,并把在其中注册的成员,逐个通知到。
接口: interface Isubject{ void Regitser();};
interface Inotice{void notice();}
需要一个数组来容纳注册过的分销商(当然你也可以用链表)
ArraList observers = new ArraList ();
目标类的注册方法 public void Register (Onserver o ){observers.add(o);}把传进来的分销商加进容器内。
还有就是要产生指令让观察者接收时需要一个方法 void Dosth()
foreach(observer o in observers)
{ //通知他们干傻事。。。。 }
我想这个样应该说清楚了吧?如果路过朋友需要其它好点的实例,可以给我发邮件 xxqq0824@163.com,给你本好书以及源码 叫C#设计模式 ,很经典哦~不过是pdg的,唉,谁叫俺目前只能看C,不能看E,要不然也看PDF了。