当前位置: 首页 > news >正文

h5响应式网站公司在线课堂网站开发

h5响应式网站公司,在线课堂网站开发,推广链接怎么制作,协会网站建设目的简介 在.NET中,观察者模式是一种设计模式,它允许对象之间进行一对多的依赖关系。当一个对象的状态发生变化时,所有依赖于它的对象都会收到通知并自动更新。这种模式在事件驱动的设计中非常常见。 在.NET中实现观察者模式,通常涉…

简介

在.NET中,观察者模式是一种设计模式,它允许对象之间进行一对多的依赖关系。当一个对象的状态发生变化时,所有依赖于它的对象都会收到通知并自动更新。这种模式在事件驱动的设计中非常常见。

在.NET中实现观察者模式,通常涉及到定义一个抽象的观察者接口和一个可被观察的对象。这个可被观察的对象维护一个观察者的列表,并在状态改变时通知所有观察者。

角色

  • 抽象主题角色(Subject):抽象主题把所有观察者对象的引用保存在一个列表中,并提供增加和删除观察者对象的操作,抽象主题角色又叫做抽象被观察者角色,一般由抽象类或接口实现。
  • 抽象观察者角色(Observer):为所有具体观察者定义一个接口,在得到主题通知时更新自己,一般由抽象类或接口实现。
  • 具体主题角色(ConcreteSubject):实现抽象主题接口,具体主题角色又叫做具体被观察者角色。
  • 具体观察者角色(ConcreteObserver):实现抽象观察者角色所要求的接口,以便使自身状态与主题的状态相协调。

优点

  • 观察者模式实现了表示层和数据逻辑层的分离,并定义了稳定的更新消息传递机制,并抽象了更新接口,使得可以有各种各样不同的表示层,即观察者。
  • 观察者模式在被观察者和观察者之间建立了一个抽象的耦合,被观察者并不知道任何一个具体的观察者,只是保存着抽象观察者的列表,每个具体观察者都符合一个抽象观察者的接口。
  • 观察者模式支持广播通信。被观察者会向所有的注册过的观察者发出通知。

缺点

  • 如果一个被观察者有很多直接和间接的观察者时,将所有的观察者都通知到会花费很多时间。
  • 虽然观察者模式可以随时使观察者知道所观察的对象发送了变化,但是观察者模式没有相应的机制使观察者知道所观察的对象是怎样发生变化的。
  • 如果在被观察者之间有循环依赖的话,被观察者会触发它们之间进行循环调用,导致系统崩溃,在使用观察者模式应特别注意这点。

应用场景

  • 当需要将一个对象的状态变化通知给其他多个对象时,可以使用观察者模式;
  • 当一个对象的改变需要同时改变其他对象的状态或者操作时,可以使用观察者模式;
  • 当一个抽象模型有两个方面,其中一个方面依赖于另一个方面时,可以使用观察者模式。例如,模型和视图之间的关系,模型驱动视图的更新,而视图反过来也要反映到模型中;
  • 当一个对象必须通知其他对象,但是你不知道这些对象是谁时,可以使用观察者模式。例如,你不知道哪些用户订阅了你的微信公众号,但你需要在每次发布新文章时通知所有订阅用户;
  • 当一个对象需要有别的对象来协助完成某项工作,并且不希望知道具体协助它的对象时,可以使用观察者模式。例如,一个员工完成某项任务需要得到经理的批准,但他并不知道具体是哪个经理会批准。

实现

  • 定义观察者接口
public interface IObserver
{void Update(string message); // 或者根据具体需求定义其他方法
}
  • 定义可观察的对象,它包含一个观察者列表,并提供注册和通知观察者的方法
using System.Collections.Generic;public class Observable
{private List<IObserver> observers = new List<IObserver>();private string state;// 注册观察者public void RegisterObserver(IObserver observer){observers.Add(observer);}// 移除观察者(可选)public void RemoveObserver(IObserver observer){observers.Remove(observer);}// 通知所有观察者(状态改变时调用)protected void NotifyObservers(string message){foreach (var observer in observers){observer.Update(message);}}// 改变状态并通知观察者(这里假设状态是一个字符串)public void ChangeState(string newState){state = newState;NotifyObservers("State changed to: " + state); // 通知所有观察者状态已改变及新状态信息}
}
  • 实现具体的观察者类,它实现观察者接口并定义如何响应通知
public class ConcreteObserver : IObserver
{public void Update(string message){// 在这里处理接收到的通知,比如更新UI、记录日志等操作。Console.WriteLine("Observer received: " + message); // 仅作为示例,实际实现根据需求来定。}
}
  • 上层应用调用
class Program
{static void Main(string[] args){// 创建可观察对象和观察者实例。Observable observable = new Observable();ConcreteObserver observer = new ConcreteObserver(); // 可以创建多个观察者实例。observable.RegisterObserver(observer); // 注册观察者到可观察对象。// ... 在程序的其他部分,当需要通知观察者时调用可观察对象的ChangeState方法     observable.ChangeState("New state information");。这样就会触发通知所有注册的观察者。}
}

http://www.yayakq.cn/news/962614/

相关文章:

  • 网站开发解决方案数字营销的优势有哪些
  • seo翻译小小课堂seo自学网
  • 有个专门做dnf游戏币的网站网站开发合作协议书
  • 国内虚拟助手网站网站建设费交文化事业
  • 广东建设工程信息网站6wordpress api下载
  • 邯郸当地招聘网站上海专业网络营销
  • 公司网站推广方案模板京东网站设计风格
  • 深圳定制网站建设什么网站做招聘收录好
  • 做软件需要网站吗网站建设算什么费用
  • 搜索引擎作弊的网站有哪些河北响应式网站企业
  • 做网站赚取广告费网站建设seo优化内蒙
  • 网站 稳定性哪里可以下企业网站模板
  • 荆门网站建设服务vs2017网站开发时修改的页面未变化
  • 建设局工程网站微信小游戏制作平台
  • 工艺宣传网站建设商务网站内容建设包括
  • 怀化网站定制福建网站建设费用
  • app优化网站建设快手刷评论推广网站
  • 深圳网站建设 百度一下网站建设收费标准讯息
  • wordpress个人博客建站系统frontpage网页制作
  • 国外建设网站首页wordpress 提示
  • 做网站计划比亚迪新能源汽车车型
  • 邢台县建设局网站做网站要找什么人
  • 网站轮播图能用什么软件做wordpress更改字体
  • 网站建设和管理存在的问题宁波市江北区庄桥街道工程建设领域网站
  • 电子商务网站规划与建设步骤做网站关于我们
  • 免费网站入口2021东莞网站建设技术
  • 网站设计与网站建设哪里有网站建设加盟合作
  • 怎么做网站的图片跳转1号网站建设
  • 台州网站建设选浙江华企专注律师微网站建设与律师微信营销
  • 国外优秀人像摄影网站wordpress完成静态化