首页 > 其他分享 >事件与委托和反射的关系

事件与委托和反射的关系

时间:2023-05-18 22:05:49浏览次数:29  
标签:反射 依赖 委托 老师 事件 方法 发消息

  • 坚持不懈的去学习。
  • 主动去思考,不要等着别人把知识灌输给你。


第一阶段,用依赖实现开门例子

先去实现了发消息者类和接收消息者类的依赖关系——接收者类依赖发消息者类。在这儿的关系是一个“死”依赖,在接收消息者类里明确的知道接收方法依赖的是发消息者类,也明确的指出调用发消息者类的发消息方法。

为了解开“死”依赖,米老师带着我们开始了学习委托与事件。

事件与委托和反射的关系_结构化

第二阶段,用委托与事件实现开门小例子

用了委托与事件相对于第一阶段有什么好处?

米老师类和何老师类没有直接的依赖关系了,降低了代码的耦合性;

在登记那里还可以去登记其他的he对象的方法,易于扩展;

米老师类和何老师类是在运行时才通过Notice类中的登记那一行代码产生了关系。

事件与委托和反射的关系_依赖关系_02

第三阶段,反射实现开门例子

在学习了反射之后,知道了委托与事件只是反射表现形式的其中一个,现在来看看反射到底是什么?

可以形容反射很霸道,使用了反射,不管你是共有的方法或类还是私有的方法或类,我都可以使用。

事件与委托和反射的关系_结构化_03


依赖实现了开门例子 VS 反射实现开门例子

依赖:

何老师类知道接收消息方法依赖米老师类,在接收消息方法内部,也知道了依赖米老师类的发消息方法。

反射:

写完代码之后,不知道依赖谁,也不知道依赖哪个方法。直到运行的时候,去获取类,再去实例了一个类对象(类模板),在通过类对象的getMethod方法去拿具体调用的方法。



完整、严谨、系统。


结构化的关联在一起:

知识是连续的,依赖和委托之间核心的关系是委托运用了反射。


学好语文很重要:

语文不好,你就没办法继续学习下去。

你不会写文章,不能把阶段性的学习用文字表达出来,那你在学习过程中还是不理解知识的逻辑关系。











标签:反射,依赖,委托,老师,事件,方法,发消息
From: https://blog.51cto.com/u_16119510/6307062

相关文章

  • vue中事件修饰符.prevent.self和.self.prevent有什么区别
    v-on:click.prevent.self:会阻止所有的点击,阻止了自身的默认事件和阻止了子元素事件的向上冒泡。v-on:click.self.prevent:只会阻止对元素自身的点击,阻止了子元素事件的向上冒泡,阻止了子组件冒泡事件的默认事件。在Vue.js中,事件修饰符.prevent用于阻止事件的默认行为,.self用于阻......
  • 自定义全局监听事件( $on $emit $off )
    app.jsApp({handlerGather:{},onLaunch:function(){const_that=thiswx.$on=function(event,fn){if(Array.isArray(event)){event.forEach(item=>{wx.$on(item,fn)})}else{(_that.......
  • 什么是反射?它有什么用?
    在Java中,反射是指在运行时检查和操作类、接口、字段、方法等程序结构的能力。通过反射,可以在运行时获取类的信息,创建类的实例,调用类的方法,访问和修改类的字段等。反射实现先定义一个需要被反射的类对象User:publicclassUser{publicStringname="张三";privat......
  • WPF 异步加载数据,窗体事件
    加载WPF界面时,需要获取数据,而数据返回的时间比较长,这个时候可以异步加载数据到界面。 1、首先在XAML中触发窗口载入事件 2、在后台代码中处理窗口载入事件(1)找到主窗口类 (2)在MainWindow类中添加XAML中加入的窗口载入事件 这个事件中可以放置各种界面预处理代码 n......
  • 17、什么是反射?
    所谓反射,是java在运行时进行自我观察的能力,通过class、constructor、field、method四个方法获取一个类的各个组成部分。在Java运行时环境中,对任意一个类,可以知道类有哪些属性和方法。这种动态获取类的信息以及动态调用对象的方法的功能来自于反射机制。......
  • FullCalendar 五:FullCalendar应用——编辑与删除日程事件
    FullCalendar可以灵活运用到项目开发中,本站上一篇文章中,我们介绍了如何在FullCalendar新建日程事件,今天我要给大家介绍的是如何在FullCalendar中编辑和删除日程事件,这样我们就完成了FullCalendar上的“增删改查”一系列操作。HTML和上一篇文章FullCalendar应用——新建日程事......
  • FullCalendar 四:FullCalendar应用——新建日程事件
    FullCalendar用日历的形式直观的展示了日程安排、代办事宜等事件,那么日历中的事件是怎么添加进去的呢?本文将结合实例使用PHP+MySQL+jQuery讲解如何在FullCalendar中新建事件。本站之前已经推出的FullCalendar应用系列文章中,有介绍FullCalendar的基本使用,FullCalendar的选项配......
  • 山东算法赛网格事件智能分类topline
    赛题链接:http://data.sd.gov.cn/cmpt/cmptDetail.html?id=67baseline:https://aistudio.baidu.com/aistudio/projectdetail/3371314?contributionType=1分数:0.749+ 任务(1)赛题任务基于网格事件数据,对网格中的事件内容进行提取分析,对事件的类别进行划分,具体为根据提供的事件描述,......
  • pb中删除事件, ue_del 删除数据窗口某列的值或全部行
    //删除“开松工艺单”Longll_rowCount,ll_temp=1,ll_row,ll_idStringls_openCraftls_openCraft=this.tab_1.tabpage_1.dw_1.Object.open_craft[1]ll_id=Tab_1.Tabpage_1.dw_1.Object.order_id[1]ll_rowCount=this.tab_1.tabpage_1.dw_4.RowCount()ll......
  • Toggle点击事件
    publicclassDemo:MonoBehaviour{privateToggletoggle;voidStart(){toggle.onValueChanged.AddListener((boolisOn)=>{OnToggleClick(toggle,isOn);});}privatevoidOnToggleClick(Toggletoggle,boolisOn){/......