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

新手站长如何购买虚拟主机做网站企业网站制作正规公司

新手站长如何购买虚拟主机做网站,企业网站制作正规公司,网页设计与网站建设考试名词解释2019,石家庄网络公司哪家正规观察者模式是一种软件设计模式#xff0c;用于定义对象之间的一对多依赖关系#xff0c;当一个对象的状态发生变化时#xff0c;它的所有依赖者#xff08;观察者#xff09;都将得到通知并自动更新。这种模式通过解耦合主题和观察者来提高对象的灵活性。 定义 观察者模式…观察者模式是一种软件设计模式用于定义对象之间的一对多依赖关系当一个对象的状态发生变化时它的所有依赖者观察者都将得到通知并自动更新。这种模式通过解耦合主题和观察者来提高对象的灵活性。 定义 观察者模式包括一个主题Subject和多个观察者Observer。当主题的状态改变时它会通知观察者并调用它们的特定方法使得观察者可以自动更新。 应用场景 观察者模式常见于以下场景         1. 当一个对象的变化需要通知其他对象而且你无法确切知道有多少个对象需要通知时可以使用观察者模式。         2. 当一个抽象模型有两个方面其中一个方面依赖于另一个方面这时使用观察者模式可以将这两者封装在独立的对象中使它们各自独立地改变和复用。 优点         1. 观察者模式降低了主题和观察者之间的耦合度使得主题和观察者可以轻松地独立变化。         2. 支持广播通信观察者模式可以向多个对象同时发送通知。 缺点         1. 如果观察者过多或通知机制过于复杂容易导致性能问题。         2. 如果观察者和主题之间存在循环依赖可能会导致系统崩溃或出现死循环。 观察者模式是一种广泛应用的设计模式在许多面向对象编程语言和框架中都有相应的实现例如在事件处理、模型-视图-控制器 (MVC) 架构中都有观察者模式的影子。 Demo 1.Subject类 internal abstract class SubjectBase{// 将所有观察者放入list集合private readonly ListObserver observers new ListObserver();public event EventHandlerEventArgs NotifyAllHandler;public virtual void NotifyAllObserver(){NotifyAllHandler?.Invoke(this, EventArgs.Empty);}/// summary/// 加入集合/// /summary/// param nameobserver/parampublic virtual void AttachObserver(Observer observer){observers.Add(observer);}/// summary/// 从观察者列表中去除/// /summary/// param nameobserver/parampublic virtual void RemoveObserver(Observer observer){observers.Remove(observer);}} internal class Subject: SubjectBase{} 2.Observer观察者抽象类 /// summary/// 观察者抽象类/// /summaryinternal abstract class Observer{protected SubjectBase _subject;/// summary/// 更新消息/// /summarypublic abstract void Update(object? sender, EventArgs eventArgs);public virtual void SetSubject(SubjectBase subject){if (subject _subject) return;if (this._subject ! null){this._subject.RemoveObserver(this);this._subject.NotifyAllHandler - Update;}this._subject subject;this._subject.AttachObserver(this);this._subject.NotifyAllHandler Update;}} 3.具体观察者需要继承Observer基类 internal class Observer_A : Observer{public override void Update(object? sender, EventArgs eventArgs){Console.WriteLine($Observer_A);}}internal class Observer_B : Observer{public override void Update(object? sender, EventArgs eventArgs){Console.WriteLine($Observer_B);}} 调用 // 发布类 SubjectBase subject new Subject();// 观察者 Observer observerA new Observer_A(); observerA.SetSubject(subject); Observer observerB new Observer_B(); observerB.SetSubject(subject);// 发布类间隔通知 await Task.Run(() {while (true){subject.NotifyAllObserver();Console.WriteLine();Thread.Sleep(3000);} });
http://www.hkea.cn/news/14514139/

相关文章:

  • 唐山公司网站制作推广优化seo
  • 星巴克网站建设ppt杭州优化公司在线留言
  • 本地网站源码中级平面设计师证书有用吗
  • 微网站有哪些卧龙区2015网站建设价格
  • 仿造别人的网站侵权吗百度公司电话是多少
  • 租空间做网站需要多少钱网址打不开怎么解决
  • 沈阳建站模板系统郑州比较好的外贸公司
  • 安防公司做网站图片网站开发硬件
  • 站长之家html商城类网站建设
  • 绵阳市 网站建设淄博百度网页设计
  • 网站开发语言入门高新网页设计报价
  • 静态网站开发工具有哪些wordpress地址 站点地址
  • 做动态h5的网站网站建设的主要技术指什么
  • 创业过程中网站建设新网站建设问卷
  • 电子网站有哪些网站建设过程小结
  • 做网站要注意哪一点阿玛尼高仿手表网站
  • c语言可以做网站吗宿州学校网站建设
  • 谭谭心怎么建设网站网络推广服务合同模板
  • 正规的网站制作哪家好前端后端
  • win2012服务器网站建设哪个网站的ps元素好
  • 假建设银行网站中国建筑网校
  • 网站搭建大型公司高端建设网页
  • 网站建设的合同模板wordpress站点搬家
  • 网站不需要什么备案香精论坛
  • 网络广告发布的形式主要包括建网站做seo
  • 北京集团公司网站建设python可以做网站
  • 会计上大额网站费如何做分录东莞南城网站建设公司
  • 郑州做营销型网站上海seo优化推广
  • 网站建设未验收会计账务处理濮阳网官网
  • 百度安全网站检测南昌网站建设哪家就好