软件设计:观察者模式-C#实现

    作者:又见阿郎更新于: 2020-04-15 15:07:27

      C#是微软公司发布的一种面向对象的、运行于.NETFramework和.NETCore(完全开源,跨平台)之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。

      定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

      观察者模式有四个角色:抽象主题、具体主题、抽象观察者、具体观察者。

      抽象主题:把所有观察者对象的引用保存到一个聚集里,每个主题都可以有任何数量的观察者。

      具体主题:将有关状态存入具体观察者对象;在具体主题内部状态改变时,给所有登记过的观察者发出通知。

      抽象观察者:为所有的具体观察者定义一个接口,在得到主题通知时更新自己。

      具体观察者:实现抽象观察者角色所要求的更新接口,以便使本身的状态与主题状态协调。

      namespaceDP_Observer

      {

      publicabstractclassObserver

      {

      publicabstractvoidUpdate();

      }

      publicabstractclassSubject

      {

      privateListobservers=newList();

      publicvoidAdd(Observerobserver)=>observers.Add(observer);

      publicvoidRemove(Observerobserver)=>observers.Remove(observer);

      publicvoidNotify()

      {

      foreach(varoinobservers)

      o.Update();

      }

      }

      publicclassConcreteSubject:Subject

      {

      publicstringState{get;set;}

      }

      publicclassConcreteObserver:Observer

      {

      privatestring_name;

      privatestring_state;

      privateConcreteSubjectsubject;

      publicConcreteObserver(ConcreteSubjectsub,stringname)

      {

      subject=sub;

      _name=name;

      }

      publicoverridevoidUpdate()

      {

      _state=subject.State;

      }

      }

      }

      客户端调用:

      varsubject=newConcreteSubject();

      subject.Add(newConcreteObserver(subject,"1"));

      subject.Add(newConcreteObserver(subject,"2"));

      subject.State="changed";

      subject.Notify();

      C#是微软公司研究员AndersHejlsberg的最新成果。C#看起来与java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NETWindows网络框架的主角。

课课家教育

未登录