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

vps做网站教程建筑木模板国家标准

vps做网站教程,建筑木模板国家标准,易趣网的网站架构,潍坊网站外包简介 在.NET中#xff0c;观察者模式是一种设计模式#xff0c;它允许对象之间进行一对多的依赖关系。当一个对象的状态发生变化时#xff0c;所有依赖于它的对象都会收到通知并自动更新。这种模式在事件驱动的设计中非常常见。 在.NET中实现观察者模式#xff0c;通常涉…简介 在.NET中观察者模式是一种设计模式它允许对象之间进行一对多的依赖关系。当一个对象的状态发生变化时所有依赖于它的对象都会收到通知并自动更新。这种模式在事件驱动的设计中非常常见。 在.NET中实现观察者模式通常涉及到定义一个抽象的观察者接口和一个可被观察的对象。这个可被观察的对象维护一个观察者的列表并在状态改变时通知所有观察者。 角色 抽象主题角色Subject抽象主题把所有观察者对象的引用保存在一个列表中并提供增加和删除观察者对象的操作抽象主题角色又叫做抽象被观察者角色一般由抽象类或接口实现。抽象观察者角色Observer为所有具体观察者定义一个接口在得到主题通知时更新自己一般由抽象类或接口实现。具体主题角色ConcreteSubject实现抽象主题接口具体主题角色又叫做具体被观察者角色。具体观察者角色ConcreteObserver实现抽象观察者角色所要求的接口以便使自身状态与主题的状态相协调。 优点 观察者模式实现了表示层和数据逻辑层的分离并定义了稳定的更新消息传递机制并抽象了更新接口使得可以有各种各样不同的表示层即观察者。观察者模式在被观察者和观察者之间建立了一个抽象的耦合被观察者并不知道任何一个具体的观察者只是保存着抽象观察者的列表每个具体观察者都符合一个抽象观察者的接口。观察者模式支持广播通信。被观察者会向所有的注册过的观察者发出通知。 缺点 如果一个被观察者有很多直接和间接的观察者时将所有的观察者都通知到会花费很多时间。虽然观察者模式可以随时使观察者知道所观察的对象发送了变化但是观察者模式没有相应的机制使观察者知道所观察的对象是怎样发生变化的。如果在被观察者之间有循环依赖的话被观察者会触发它们之间进行循环调用导致系统崩溃在使用观察者模式应特别注意这点。 应用场景 当需要将一个对象的状态变化通知给其他多个对象时可以使用观察者模式当一个对象的改变需要同时改变其他对象的状态或者操作时可以使用观察者模式当一个抽象模型有两个方面其中一个方面依赖于另一个方面时可以使用观察者模式。例如模型和视图之间的关系模型驱动视图的更新而视图反过来也要反映到模型中当一个对象必须通知其他对象但是你不知道这些对象是谁时可以使用观察者模式。例如你不知道哪些用户订阅了你的微信公众号但你需要在每次发布新文章时通知所有订阅用户当一个对象需要有别的对象来协助完成某项工作并且不希望知道具体协助它的对象时可以使用观察者模式。例如一个员工完成某项任务需要得到经理的批准但他并不知道具体是哪个经理会批准。 实现 定义观察者接口 public interface IObserver {void Update(string message); // 或者根据具体需求定义其他方法 } 定义可观察的对象它包含一个观察者列表并提供注册和通知观察者的方法 using System.Collections.Generic;public class Observable {private ListIObserver observers new ListIObserver();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.hkea.cn/news/14338151/

相关文章:

  • 免费建建网站网站建设商虎小程序
  • 网站建设 工作职责培训学校 网站费用
  • 国内搜索引擎网站学工系统网站建设的意义
  • wordpress教育汉化主题深圳网站做优化哪家公司好
  • 谷歌做新媒体运营的网站wordpress标题去重
  • 邯郸市住房和城乡建设网站动漫在线制作网站
  • wordpress如何设置伪静态辽源网站seo
  • 福永招聘网站建设wordpress cms 插件
  • 河北省建设招标网站傻瓜式网站开发工具
  • 雄安免费网站建设电话动态图片怎么制作
  • 学校网站logo怎么做icp备案信息查询系统
  • 用模板做的网站多少钱wordpress下载文件
  • 网站备案需要关闭网站吗数字化营销
  • 西部网站管理助手分阶段建设网站
  • 襄阳市做网站手机版桂林生活网官网
  • 网站如何减少404跳转会计信息系统网站建设流程图
  • 在网上做软件挣钱的网站网站图片优化大小
  • 深圳网站建设 案例网站备案号是什么意思
  • 北京建站优化公司百度推广助手
  • 公司网站做论坛黑帽seo是什么
  • 校园二手书交易网站开发网站建设费如何会计处理
  • 淄博亿泰网站建设推广免费化妆品网站模板下载
  • 绍兴cms建站模板北京网站关键词优化推荐
  • wordpress建站欣赏做网站优化费用
  • wordpress 外贸建站c2c的网站名称和网址
  • 安徽索凯特建设工程有限公司网站wordpress小论坛
  • 设计外贸网站建设群晖套件wordpress
  • 织梦网站底部黑链wordpress素锦
  • 成都正规集团网站制作维护潍坊专业人员继续教育网络平台登录
  • 离石做网站的公司手机网站 微信平台