首页 > 其他分享 >csharp 发布订阅 设计模式

csharp 发布订阅 设计模式

时间:2024-01-30 13:56:11浏览次数:22  
标签:订阅 Publisher Subscriber 事件 csharp 设计模式 public MyEvent

event_learn\Program.cs

using System;

// 定义一个发布者类,它有一个 MyEvent 事件
public class Publisher
{
    // 声明一个事件,使用 EventHandler 委托类型
    public event EventHandler MyEvent;

    // 定义一个触发事件的方法
    protected virtual void OnMyEvent()
    {
        // 检查事件是否有订阅者,如果有,就调用它们,并传递一个包含事件信息的对象
        MyEvent?.Invoke(this, EventArgs.Empty);
    }

    // 定义一个模拟的操作方法
    public void DoSomething()
    {
        // 在这里执行一些操作
        Console.WriteLine("Publisher is doing something.");

        // 在操作完成后,调用触发事件的方法
        OnMyEvent();
    }
}

// 定义一个订阅者类,它有一个 HandleEvent 方法,它订阅了 MyEvent 事件
public class Subscriber
{
    // 定义一个事件处理程序方法,其签名与事件的委托类型匹配
    public void HandleEvent(object sender, EventArgs e)
    {
        // 在这里添加事件处理逻辑
        Console.WriteLine("Subscriber received event from {0}  ,  {1}.", sender, e);
    }
}


class Program
{
    static void Main(string[] args)
    {
        // 创建一个发布者对象
        Publisher publisher = new Publisher();

        // 创建一个订阅者对象
        Subscriber subscriber = new Subscriber();

        // 使用加法赋值运算符 (+=) 来为事件添加事件处理程序
        publisher.MyEvent += subscriber.HandleEvent!;

        // 调用发布者的操作方法,引发事件
        publisher.DoSomething();

        // 输出结果:
        // Publisher is doing something.
        // Subscriber received event from Publisher.
    }
}


标签:订阅,Publisher,Subscriber,事件,csharp,设计模式,public,MyEvent
From: https://www.cnblogs.com/zhuoss/p/17996938

相关文章

  • C语言设计模式精要
    在C语言中,设计模式是一种常见的方法,它可以帮助我们更好地设计和实现软件系统。设计模式是一种面向对象的设计模式,它可以帮助我们更好地组织和管理代码,提高代码的可读性和可维护性。在C语言中,设计模式主要包括以下几种:单例模式、工厂模式、观察者模式、策略模式、装饰模式等。单......
  • 设计模式之访问者模式
    1.定义将算法与其所作用的对象隔离2.口语化表述访问者模式其实就是将具体算法与作用对象分离举个例子,现在需要使用手机打电话,人已经具备了,就差个手机不同的手机有不同的操作方式,所以需要人根据具体手机来操作这就类似于访问者模式,将具体怎么打电话的操作交与人(访问者)来实......
  • 设计模式(二十三)访问者
    一、定义表示一个作用于某对象结构中的各个元素的操作。访问者模式让你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式二、描述访问者模式是一种较为复杂的行为型模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通......
  • 设计模式:策略模式/状态模式
    设计模式是通用的、可复用的代码设计方案,也可以说是针对某类问题的解决方案,因此,掌握好设计模式,可以帮助我们编写更健壮的代码。wiki中将设计模式分为四类,分别是:创建模式(creationalpatterns)结构模式(structuralpatterns)行为模式(behavioralpatterns)并发模式(concurrencypatt......
  • [经验] 怎么退订天气预报-如何取消订阅天气预报
    天气预报是我们生活中的一项重要服务,但有时候我们会因为各种原因需要取消订阅。下面就来介绍一下怎么退订天气预报。第一步:找到订阅渠道在进行退订前,我们需要确定自己订阅的渠道是哪个。目前,订阅天气预报的方式有很多,比如通过短信、APP、邮件、语音电话等多种方式,每种方式的退订步......
  • 《设计模式之禅》读书笔记
    参考  https://zhuanlan.zhihu.com/p/357889775 一、六大设计原则单一职责原则定义:应该有且仅有一个原因引起类的变更。举例:属性和行为拆分,例如setPassword(Stringpassword)和changePassword(Stringpassword)。单一职责原则提出了一个编写程序的标准,用“职责”或“......
  • 设计模式
    1、设计模式七大原则:1)单一职责原则,一个类或者一个方法只负责一项原则2)接口隔离原则,客户端不应该依赖他不需要的接口3)依赖倒转原则,细节依赖抽象(面向接口编程)4)里氏替换原则,子类中尽量不重写父类的方法,可通过聚合、组合解决5)开闭原则,对扩展开放,对修改关闭6)迪米特法则,最少知道原......
  • 设计模式:创建型模式
    文章目录 1.简单工厂模式(SimpleFactory)1.1.定义1.2.结构1.3.时序图1.4.代码实现1.5.优缺点1.6.使用场景1.7.总结2.工厂方法模式(FactoryMethod)2.1.定义2.2.结构2.3.时序图2.4.代码实现2.5.优缺点2.6.使用场景2.7.总结3.抽象工厂模式(AbstractFactory)3.1.......
  • 单例设计模式
    单例设计模式概念单例模式是java中常见的设计模式之一,主要有:懒汉单例模式,饿汉单例模式,还有登记式单例.这边主要讲懒汉和饿汉.单例模式有以下特点.单例类只能有一个实例单例类必须自己创建自己的唯一实例单例;类必须给所有其他对象提供这一实例懒汉设计模式代码public......
  • CSharp: UglyToad.PdfPig int .net8
     /*IDE:VS202217.5OS:windows10.net:8.0生成PDF文档,从PDF文档中获取文字内容控制台下测试*///Seehttps://aka.ms/new-console-templateformoreinformationusingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Xml.L......