下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

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

作者:又见阿郎     来源: https://www.cnblogs.com/zhiyong-ITNote/p/10970067.html点击数:1353发布时间: 2020-04-15 15:07:31

标签: C#java高级程序

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

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

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

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

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

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

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

  namespaceDP_Observer

  {

  publicabstractclassObserver

  {

  publicabstractvoidUpdate();

  }

  publicabstractclassSubject

  {

  privateList<Observer>observers=newList<Observer>();

  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网络框架的主角。

赞(15)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程