事件和观察者模式

事件是对象广播已发生事情的方式,发布者触发事件,订阅者响应。C#中事件基于EventHandler委托和EventArgs类。观察者模式定义了一对多依赖关系,当对象状态改变时,所有依赖对象都会得到通知。猫类(发布者)和老鼠类(订阅者)为例,解释了如何订阅和触发事件。
摘要由CSDN通过智能技术生成

事件

事件是对象用于(向系统中的所有相关组件)广播已发生事情的一种方式。 任何其他组件都可以订阅事件,并在事件引发时得到通知。
类 或对象可以通过事件向其他类或对象通知发生的相关事情。 发送(或引发)事件的类称为“发布者”,接收(或处理)事件的类称为“订阅者”。
简单来总结就是发布与订阅。

在声明一个委托类型前面添加event关键字就是事件。

 public delegate void MyDelegate();//这是定义委托
 public MyDelegate mydelegate;//声明一个委托类型的变量,作为类的成员
 public event MyDelegate myEvent;//在声明一个委托类型前面添加event关键字就是事件。

事件具有以下属性:
1.发行者确定何时引发事件;订户确定对事件作出何种响应。
2.一个事件可以有多个订户。 订户可以处理来自多个发行者的多个事件。
3.没有订户的事件永远也不会引发。
4.事件通常用于表示用户操作,例如单击按钮或图形用户界面中的菜单选项。
5.当事件具有多个订户时,引发该事件时会同步调用事件处理程序。 若要异步调用事件,请参阅 “使用异步方式调用同步方法”。
在 .NET 类库中,事件基于 EventHandler 委托和 EventArgs 基类。
上面节选自C#文档,下面是文档连接:

https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/events/

观察者模式例子

意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。

何时使用:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。
关于观察者模式跟详细可以百度一下。

猫类(被观察者)发布者

namespace _011观察者模式_猫抓老鼠
{
   /// <summary>
/// 猫是被观察者
/// </summary>
    class Cat
    {
   
        private string name;
        private string color;

        public Cat(string name,string color)
        {
   
            this.name = name
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值