回调与事件-个人理解

来源:互联网 发布:打车软件悄然涨价 编辑:程序博客网 时间:2024/04/20 15:17

今天在看马士兵老师的视频时,提及到了回调的概念,以前对这概念就有点含糊,有点清晰之后突然想他与事件到底有什么区别,想了一两个小时,写下自己的理解.以下内容绝不权威,仅供参考和交流.

 

系统:提供回调或事件处理功能的环境,即功能设计之处.

用户:欲利用系统提供功能的自定义代码处.

 

站在用户角度

回调

告诉系统开始执行指定代码,并且在执行的过程中,把我的逻辑嵌入进去

事件

事件是被动的,符合一定条件的时候自定义事件处理过程会被系统调用

(Java中是以监听器实现事件检测的,如果将监听器的相关代码看作用户代码的话则貌似主动了,但实际还是由被监听的对象主动调用监听器的接口方法)

 

站在系统角度

回调是预定义一段代码,(并且代码中嵌入用户要实现的自定义代码).

此段代码不由系统主动执行,当用户已实现要嵌入的代码时再主动调用此段代码,然后执行时加入用户的逻辑.

事件是在系统执行时,如果符合一定条件则顺手调用一下用户代码

 

共性:

系统执行逻辑中调用用户逻辑

 

关于同步异步

从逻辑上来讲,事件触发后的用户逻辑与系统逻辑是分离的,应该是异步的,但是设计上来说,同步也无不可,Java中的组件类在调用监听类的接口方法时应该不会新建一个线程再去调用.

回调是逻辑的嵌入应该是同步的,但系统逻辑也可能需要异步嵌入,用户逻辑也可能需要异步执行,所以设计时同步异步无可非,用户自定义代码中新建线程你也不能说什么,但绝大多数情况下还是同步的.

 

 

 

原创粉丝点击