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

中国免费网站服务器主机域名信用信息查询公示系统

中国免费网站服务器主机域名,信用信息查询公示系统,成都网站建设工作室,建设部网站如何登录监理工程师定义: 又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者 对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自 …

定义:

又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者 对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自 动更新自己。

在观察者模式中有如下角色:

  1. Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每 个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象。
  2. ConcreteSubject:具体主题(具体被观察者),该角色将有关状态存入具体观察者对象,在具 体主题的内部状态发生改变时,给所有注册过的观察者发送通知。
  3. Observer:抽象观察者,是观察者的抽象类,它定义了一个更新接口,使得在得到主题更改通知 时更新自己。
  4. ConcrereObserver:具体观察者,实现抽象观察者定义的更新接口,以便在得到主题更改通知 时更新自身的状态。

案例

这里案例使用一个委托进行多播来进行对热水器的观察

加热器类

首先定义一个全局变量,温度temperature,然后使用event声明一个事件,委托名称使用无返回值的Action,参数为int。然后写一个for循环模拟烧水,温度temperature大于95时,执行事件。

public class HeaterSubject
{private int _temperature;public event Action<int> OnBoilEvent;public void BoilWater(){for (int i = 0; i < 100; i++){_temperature++;if (_temperature >= 95){OnBoilEvent.Invoke(_temperature);//触发事件:发出警报,显示水温}}}
}

监视者

热水器上一般都有显示屏和警报器,这里模拟两个观察者,分别是显示器和警报器

因为上面声明的委托参数是int,这里的观察者参数也要匹配,等一下才可以通过多播的形式插入

public class DisPlayObserver
{/// <summary>/// 显示水温/// </summary>/// <param name="temperature"></param>public void Display(int temperature){Console.WriteLine($"显示屏-当前温度是:{temperature}");}
}
public class AlertObserver
{/// <summary>/// 发出警报/// </summary>/// <param name="temperature"></param>public void MakeAlert(int temperature){Console.WriteLine($"语音报警器-温度是{temperature}");}
}

main方法

在main方法中,实现new一个热水器的实例,然后使用多播将多个方法绑定到一个委托实例。当调用此类委托时,所有绑定的方法会被一次全部调用,最后调用热水器的烧水方法

    public static void Main(string[] args){HeaterSubject subject = new HeaterSubject();//订阅发出警报subject.OnBoilEvent += new AlertObserver().MakeAlert;//订阅显示水温subject.OnBoilEvent += new DisPlayObserver().Display;subject.BoilWater();}

 多播的优缺点

  1. 优点: 降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。 被观察者发送通知,所有注册的观察者都会收到信息【可以实现广播机制】
  2. 缺点: 如果观察者非常多的话,那么所有的观察者收到被观察者发送的通知会耗时 如果被观察者有循环依赖的话,那么被观察者发送通知会使观察者循环调用,会导致系统崩溃

 使用场景

  1. 对象间存在一对多关系,一个对象的状态发生改变会影响其他对象。
  2. 当一个抽象模型有两个方面,其中一个方面依赖于另一方面时。

 

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

相关文章:

  • 网站建设公司生存百度首页关键词优化
  • 网站排名优化快速黄岐建网站
  • 站酷的网址站长统计幸福宝网站统计
  • 徐州自助建站系统个人网页制作成品免费开源代码
  • 网站备案的幕布尺寸wordpress 4.5下载
  • 企业手机网站建设机构网站建设皖icp
  • 哪个网站做的简历最好公司做的网站版权归谁所有
  • 植物网站设计方案网址大全在线免费观看
  • 代码优化网站排名wordpress 多备份
  • 佛山专业网站建设报价广西南宁市有哪些网络公司
  • 做企业网站电话销售话术巴中网站开发
  • 门户网站建设思维导图收钱码合并的网站怎么做
  • 陕西西安建设厅官方网站c语言除了做网站还能干什么
  • 专业企业网站制作南京网站设计公司哪儿济南兴田德润怎么联系
  • 旅游搜索网站开发做网站是自己公司做好还是外包好
  • 淘宝网站做淘宝客学校网站管理系统免费版
  • 网络营销期末考试试题及答案沈阳百度首页优化
  • 辽宁注册公司网站实现网站开发
  • 呼和浩特市网站建设公司如何登录微信开发者平台
  • 网站开发和浏览器兼容问题东莞网站建设公司网站建设
  • 重庆市网站推广企业网站html
  • 建设六马路小学 网站聚名网买卖域名合法吗
  • 动态型网站建设网站建设需要提供那些资料
  • 模版建站汝城网站建设公司
  • 蚌埠市做网站百度外推排名代做
  • 网站建设公司信科网络精品课网站建设
  • 电商平台网站建设功能介绍滨海新区做网站
  • 网站的建设及维护做网站空间哪家好
  • 网站建设方案计划书人员规划抖音seo排名软件哪个好
  • 网站制作价格服务国家信用信息公示系统四川