zoukankan      html  css  js  c++  java
  • .NET Event 事件与 delegate 委托 分析

      参考文章&图片来源:https://medium.com/@text2dipak/c-interview-prep-1-delegates-vs-events-1b6ef656d046

    delegate

    委托是一种类型安全的函数指针,用于指向签名匹配的方法

     

    为什么使用

    参考回调函数,解除被调用者与调用者之间的耦合性

     

     使用委托之前:

      如下代码客户端与请求操作LengthOperaion耦合度高

    Method callback without delegate

     

    使用委托之后:

      解除客户端与请求的耦合:

    1. 无需将客户端注入请求 
    2.  修改客户端回调方法时,无需修改Operation
    3. Operation可以在无需修改的情况下,给其它客户端调用

     

    ps:委托有两种类型

      1.单一委托

      2.多播委托

    event

    事件是一种封装的委托

    主要分为两部分 -- 类似于观察者模式

    • 推送者

    唯一,定义事件,在符合特定条件下进行推送

    • 订阅者

     一或多,监听推送者的事件推送。提供一个方法(委托)给推送者,等满足特定条件时由推送者调用

     

     

    Event publisher

     

     

     Q & A:

    1. Q:委托是否可以为空 ? 
      A:Yes

    2. Q:事件与委托的关系? 
      A:事件是一种特殊封装的委托

    3. Q:事件是否可以用委托来实现?
      A:可以

    4. Q:事件存在的意义? ---重点
      A:事件不支持 ‘ = ’ 的操作,防止客户端(注册者)使用 ‘ = ’ 重置了委托的订阅者方法清单,
        只允许添加或者移除

     

  • 相关阅读:
    错误提示窗口-“操作系统当前的配置不能运行此应用程序”
    打印机无法打印的10种解决方法
    开发进度三
    人月神话阅读笔记二
    开发进度二
    开发进度1
    人月神话阅读笔记一
    库存物资管理系统
    四则运算
    动手动脑5
  • 原文地址:https://www.cnblogs.com/Gilfoyle/p/12650963.html
Copyright © 2011-2022 走看看