设计模式之观察者模式 (原创)

来源:互联网 发布:猪八戒考试软件app 编辑:程序博客网 时间:2024/04/29 15:06

本人认为观察者模式和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了。

 

 

原创粉丝点击