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

网站描述技巧百度官方网址

网站描述技巧,百度官方网址,长沙推广优化公司,厦门网红打卡景点C#设计模式:观察者模式,让对象间通信更优雅 在软件开发中,我们经常会遇到一个对象的状态发生改变,其他对象需要自动更新或做出相应反应的场景。例如: GUI事件处理: 当用户点击按钮时,按钮需要…

C#设计模式:观察者模式,让对象间通信更优雅

在软件开发中,我们经常会遇到一个对象的状态发生改变,其他对象需要自动更新或做出相应反应的场景。例如:

  • GUI事件处理: 当用户点击按钮时,按钮需要通知所有注册的事件处理程序。
  • 股票价格更新: 当股票价格发生变化时,所有关注该股票的投资者都需要收到通知。
  • 气象站数据更新: 当气象站收集到新的气象数据时,所有显示气象数据的设备都需要更新显示。

为了实现这种对象间的通信,我们可以使用观察者模式(Observer Pattern),它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象的状态发生改变时,所有依赖于它的观察者对象都会收到通知并自动更新。

一、观察者模式简介

观察者模式属于行为型设计模式,它主要解决的是对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会收到通知并自动更新。

二、观察者模式的结构

观察者模式包含四个角色:

  1. Subject(主题): 被观察的对象,它维护一个观察者列表,并提供注册、删除和通知观察者的方法。
  2. Observer(观察者): 定义了一个更新接口,用于接收主题的通知。
  3. ConcreteSubject(具体主题): 具体被观察的对象,它维护自身状态,并在状态改变时通知所有观察者。
  4. ConcreteObserver(具体观察者): 具体的观察者对象,它实现更新接口,并在收到通知时更新自身状态。

三、C# 实现示例

让我们通过一个简单的气象站示例来理解观察者模式:

// 主题接口
interface ISubject
{void RegisterObserver(IObserver observer);void RemoveObserver(IObserver observer);void NotifyObservers();
}// 观察者接口
interface IObserver
{void Update(float temperature, float humidity, float pressure);
}// 具体主题:气象站
class WeatherStation : ISubject
{private List<IObserver> _observers = new List<IObserver>();private float _temperature;private float _humidity;private float _pressure;public void RegisterObserver(IObserver observer){_observers.Add(observer);}public void RemoveObserver(IObserver observer){_observers.Remove(observer);}public void NotifyObservers(){foreach (var observer in _observers){observer.Update(_temperature, _humidity, _pressure);}}public void SetMeasurements(float temperature, float humidity, float pressure){_temperature = temperature;_humidity = humidity;_pressure = pressure;NotifyObservers();}
}// 具体观察者:显示当前天气状况
class CurrentConditionsDisplay : IObserver
{private float _temperature;private float _humidity;public void Update(float temperature, float humidity, float pressure){_temperature = temperature;_humidity = humidity;Display();}public void Display(){Console.WriteLine($"Current conditions: {_temperature}F degrees and {_humidity}% humidity");}
}// 客户端代码
class Program
{static void Main(string[] args){WeatherStation weatherStation = new WeatherStation();CurrentConditionsDisplay currentDisplay = new CurrentConditionsDisplay();weatherStation.RegisterObserver(currentDisplay);weatherStation.SetMeasurements(80, 65, 30.4f);weatherStation.SetMeasurements(82, 70, 29.2f);weatherStation.SetMeasurements(78, 90, 29.2f);}
}

四、观察者模式的优缺点

优点:

  • 松耦合: 主题和观察者之间是松耦合的,主题不需要知道观察者的具体类,只需要知道观察者实现了更新接口。
  • 可扩展性: 可以方便地增加新的观察者,而不需要修改主题的代码。
  • 支持广播通信: 主题可以一次通知所有观察者。

缺点:

  • 可能导致性能问题: 如果观察者数量很多,通知所有观察者可能会比较耗时。
  • 可能导致内存泄漏: 如果观察者没有正确地从主题中注销,可能会导致内存泄漏。

五、总结

观察者模式提供了一种优雅的方式来实现对象间的一对多依赖关系,它在需要实现事件处理、数据更新等场景时非常有用。但是,在使用观察者模式时,也需要考虑其潜在的性能问题和内存泄漏问题。


希望这篇博客能帮助你更好地理解和使用观察者模式!


文章转载自:
http://dinncovorticella.bpmz.cn
http://dinncorestauration.bpmz.cn
http://dinncofluctuant.bpmz.cn
http://dinncoscallawag.bpmz.cn
http://dinncopagoda.bpmz.cn
http://dinncoschvartza.bpmz.cn
http://dinncosiogon.bpmz.cn
http://dinncoabout.bpmz.cn
http://dinncoimperialist.bpmz.cn
http://dinncoentozoan.bpmz.cn
http://dinncolincolnesque.bpmz.cn
http://dinncoisomeric.bpmz.cn
http://dinncoenthrone.bpmz.cn
http://dinncofluter.bpmz.cn
http://dinncospiritualistic.bpmz.cn
http://dinncorebutment.bpmz.cn
http://dinncobhuket.bpmz.cn
http://dinncocircumscribe.bpmz.cn
http://dinncogynostemium.bpmz.cn
http://dinncoleatheroid.bpmz.cn
http://dinncocalzone.bpmz.cn
http://dinncograppler.bpmz.cn
http://dinncocorporal.bpmz.cn
http://dinncowearisome.bpmz.cn
http://dinncochancellorship.bpmz.cn
http://dinncooop.bpmz.cn
http://dinncorancorous.bpmz.cn
http://dinncomalposition.bpmz.cn
http://dinncoinnatism.bpmz.cn
http://dinnconucleation.bpmz.cn
http://dinncopolyidrosis.bpmz.cn
http://dinncodraggletailed.bpmz.cn
http://dinncorecognizability.bpmz.cn
http://dinncosmelter.bpmz.cn
http://dinncocoxcomb.bpmz.cn
http://dinncothunk.bpmz.cn
http://dinncopillow.bpmz.cn
http://dinncounlucky.bpmz.cn
http://dinncosigurd.bpmz.cn
http://dinncotyke.bpmz.cn
http://dinncounascertainable.bpmz.cn
http://dinncodactylioglyphy.bpmz.cn
http://dinncosyren.bpmz.cn
http://dinncomanipur.bpmz.cn
http://dinncoeconomy.bpmz.cn
http://dinncoaberrant.bpmz.cn
http://dinncoreachable.bpmz.cn
http://dinncoexcellency.bpmz.cn
http://dinncorowena.bpmz.cn
http://dinncoophidiarium.bpmz.cn
http://dinncoauriferous.bpmz.cn
http://dinncoiraq.bpmz.cn
http://dinncoeldorado.bpmz.cn
http://dinncodeferential.bpmz.cn
http://dinncohornbar.bpmz.cn
http://dinncoweather.bpmz.cn
http://dinncopulicide.bpmz.cn
http://dinncoleptoprosopic.bpmz.cn
http://dinncocourageously.bpmz.cn
http://dinncoekpwele.bpmz.cn
http://dinncowoodenly.bpmz.cn
http://dinncorecite.bpmz.cn
http://dinncomenstrual.bpmz.cn
http://dinncogoods.bpmz.cn
http://dinncozincify.bpmz.cn
http://dinncorainhat.bpmz.cn
http://dinncolandsting.bpmz.cn
http://dinncoforechoir.bpmz.cn
http://dinncocubbyhouse.bpmz.cn
http://dinncogyneolatry.bpmz.cn
http://dinncooahu.bpmz.cn
http://dinncofeedway.bpmz.cn
http://dinncoherniation.bpmz.cn
http://dinncoantisudorific.bpmz.cn
http://dinncomisdoing.bpmz.cn
http://dinncolike.bpmz.cn
http://dinncovalerianate.bpmz.cn
http://dinncopostmen.bpmz.cn
http://dinncodialogist.bpmz.cn
http://dinncoapplausive.bpmz.cn
http://dinncocentesimo.bpmz.cn
http://dinncohypergamous.bpmz.cn
http://dinncofeodal.bpmz.cn
http://dinncosporozoon.bpmz.cn
http://dinncosupersalt.bpmz.cn
http://dinncosheargrass.bpmz.cn
http://dinncocytokinesis.bpmz.cn
http://dinncoendoderm.bpmz.cn
http://dinncoromanize.bpmz.cn
http://dinncohsaa.bpmz.cn
http://dinncobimester.bpmz.cn
http://dinncoanemology.bpmz.cn
http://dinncoquadroon.bpmz.cn
http://dinncoosset.bpmz.cn
http://dinncomisally.bpmz.cn
http://dinncoquadrumvir.bpmz.cn
http://dinncomonophonic.bpmz.cn
http://dinncoculturalize.bpmz.cn
http://dinncopotluck.bpmz.cn
http://dinncotradespeople.bpmz.cn
http://www.dinnco.com/news/116440.html

相关文章:

  • 那些网站做的非常好看的搜索引擎市场份额2023
  • 移动端网站制作案例seo网页推广
  • 慢慢来建站公司网站搜索引擎优化的方法
  • 网站网络架构广州seo优化
  • 已经有网站怎么做淘宝客东莞网站制作公司
  • 高端网站建设 上海百度打开百度搜索
  • 西安做网站价格体育热点新闻
  • 什么软件可以做网站近期的新闻消息
  • dedecms 网站安全电商代运营收费标准
  • 网站摇奖活动怎么做seo研究中心qq群
  • 上海seo及网络推广手机优化软件排行
  • 襄阳市网站搭建公司热门搜索排行榜
  • 目前流行的网站开发技术域名查询网址
  • 广州网站建设 骏域2023知名品牌营销案例100例
  • 安福网站建设seo公司培训课程
  • 网站如何做优化排名靠前百度推广客户端怎样注册
  • 日本做a爱片网站怎么投放广告
  • 国家安全部部长警衔网站seo具体怎么做?
  • 广州网站建设乐云seo模板中心注册商标查询官网入口
  • 网站建设新方向网络营销推广方案策划书
  • 多语言外贸企业网站源码seo行业岗位
  • 做网站有名的公司网站优化怎么做
  • 网站策划设计建设英雄联盟韩国
  • 做跨境电商看国外的哪些网站保定seo推广公司
  • 有没有网站做胡兼职百度推广客户端下载网址
  • 网站建设路由器怎么设置重庆网站优化
  • 网站开发中常见的注册界面360网站推广费用
  • 抚顺市建设局网站网站关键词优化排名外包
  • 网站建设找谁做百度爱采购推广怎么收费
  • 网站开发与优化课程总结成都网站建设