Atitit callback回调机制大总结

目录

1. 回调机制=Call back, 1

1.1. 1.为什么需要Call back 2

1.2. 模块之间的调用,调用的方式分为几种:1)同步调用(2)异步调用(3)回调 3

1.3. ★回调函数的基本特征:上层模块中编写的,上层模块不会去调用的函数。 3

2. 调用的分类 3

2.1. 阻塞式调用vs 非阻塞 3

2.2. 同步异步 4

2.3. 单向  vs 双向调用 4

2.4. 直接调用 vs 回调 4

3. 实现模式 4

3.1. Net委托 4

3.2. 接口实现回调 4

3.3. 轮训 4

3.4. 函数指针 4

4. Java的实现模式 4

4.1. 如同AddOp一样的独立的实现类 4

4.2. 可以使用匿名类(anonymous classes) 4

4.3. 可以使用λ表达式[Java 8]。 4

5. 其他 5

5.1. 使用Future+Callable的方式, 5

5.2. 等待异步线程执行结果,这相当于就是同步调用的一种变种,因为其本质还是方法返回一个结果,即学生的回答 5

1. 回调机制=Call back,

也就是说,只要传递的参数不是基本类型,而是函数的指针(引用)即为回调。

一个动词词组。这是为了区别于名词 回调函数/回调方法(简称回调、callback)

因此,回调机制是编写框架/类库时需要的基本技术(回调机制/call back是框架设计的基本手段)。回调机制 =控制反转IoC。(IoC与依赖注入无关!!!)

回调机制是指编写框架/类库(或者操作系统如Windows)时,程序员所需要的、编程语言让上层模块提供代码的机制。上层模块所提供的这种代码则称为回调函数/回调方法(简称回调、callback,一个名词)。

在具有高阶函数的语言中,回调(函数)基本上是一个不需要存在的概念。

1.1. 1.为什么需要Call back

1)软件开发中分层是常用的策略,例如管理信息系统常用的逻辑三层结构——表现层、业务逻辑层和数据访问层。如果你对3层结构不熟悉,那么你知道,你编写的应用程序(application program)使用了JDK或其他框架/类库,app是上层,而JDK是下层。

yqj2065很强调分层,因为回调机制内含分层的想法,即使你在你的应用程序中也使用了回调机制但是没有分层,你事实上隐含地分了层——单向依赖。

2)回调机制是编写框架/类库时需要的基本技术(回调机制/call back是框架设计的基本手段)。

你编写类库时,除了给app直接调用的功能模块,有些模块需要app程序员提供代码支持

例如你设计一个op(double m,double n)函数,对两个double操作后返回一个double值。App程序员可能进行各种操作,如相加,比较、求幂等等。需要上层模块提供代码,这就是原因——我们需要回调机制。那么如何让app程序员提供代码,下层要如何调用(call)上层的代码呢?

1.2. 模块之间的调用,调用的方式分为几种:1)同步调用(2)异步调用(3)回调

★一个回调函数/回调方法(简称回调、callback)是上层模块实现的,将被下层模块(反过来)“执行”的方法。

从提供回调函数的方法体的角度看,λ表达式最为简洁。因此,Java 8你肯定要学习,大家都会马上使用它。

1.3. ★回调函数的基本特征:上层模块中编写的,上层模块不会去调用的函数

1.4. 函数回调,接口回调,事件回调

2. 调用的分类

2.1. 阻塞式调用vs 非阻塞 

,调用方要等待对方执行完毕才返回。回调是一种双向调用模式

2.2. 同步异步

2.3. 单向  vs 双向调用

2.4. 直接调用 vs 回调

3. 实现模式

3.1. Net委托

3.2. 接口实现回调

3.3. 轮训

3.4. 函数指针

4. Java的实现模式

4.1. 如同AddOp一样的独立的实现类

4.2. 可以使用匿名类(anonymous classes)

4.3. 可以使用λ表达式[Java 8]。

java中回调函数的实现:

java不支持指针,但是可以通过定义接口的方式实现回调。

定义一个只有回调函数的接口,并将该接口对象传递给调用函数,则在调用函数执行时,会执行回调函数。

5. 其他

5.1. 使用Future+Callable的方式,

5.2. 等待异步线程执行结果,这相当于就是同步调用的一种变种,因为其本质还是方法返回一个结果,即学生的回答

(2)使用异步回调

什么是回调机制(Call back) - CSDN博客.html

ASP.NET 回调技术(CallBack) - 易尔购 - 博客园.html

C++如何至少用三种方法实现回调机制? - C_C++-ChinaUnix.net.html

使用Java 8的CompletableFuture实现函数式的回调.html

Atitit callback回调机制大总结 目录 1. 回调机制=Call back, 1 1.1. 1.为什么需要Call back 2 1.2. 模块之间的调用,调用的方式分为几种:1)同步调相关推荐

  1. c++ 异步回调_知道Java中的回调机制吗?

    调用和回调机制 在一个应用系统中, 无论使用何种语言开发, 必然存在模块之间的调用, 调用的方式分为几种: 1.同步调用 同步调用是最基本并且最简单的一种调用方式, 类A的方法a()调用类B的方法b( ...

  2. Atitit 知识与学科的分类 杜威十进分类法 图书分类法已经采用二十二个大类 目录 1.1. 类知识的积累是一个从少到多的过程 1 1.2. 杜威十进分类法(Dewey Decimal Class

    Atitit 知识与学科的分类 杜威十进分类法 图书分类法已经采用二十二个大类 目录 1.1. 类知识的积累是一个从少到多的过程 1 1.2. 杜威十进分类法(Dewey Decimal Classi ...

  3. qprocess回调_QT进程间通信详细介绍及QProcess机制分析

    1.QT通信机制 为了更好的实现QT的信息交互,在QT系统中创建了较为完善的通信机制.QT的通信可分为QT内部通信和外部通信两大类.对于这两类通信机制及应用场合做如以下分析: (1)QT内部对象间通信 ...

  4. 回调java 简书_Java接口回调机制详解【转】

    一.回调的含义和用途 1. 什么是回调? 一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类:同步调用.异步调用和回调.同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的 ...

  5. 计算机基础课目录,计算机基础课程Word目录自动生成机制

    徐雪峰 摘  要: Word的目录自动生成功能,简单易用,但长文编辑.多人协作时极容易出错,这也是很多高校"计算机基础"课程Word部分教学的一个重点和难点.从目录自动生成的功能看 ...

  6. Java反射机制大神必学系列之 ,高级与低级的差别在哪里?

    Java反射机制大神必学系列之 ,高级与低级的差别在哪里? java学习爱好者 2019-05-20 19:08 前言 今天介绍下Java的反射机制,以前我们获取一个类的实例都是使用new一个实例出来 ...

  7. Atitit。Cas机制 软件开发 编程语言 无锁机制 java c# php

    Atitit.Cas机制 软件开发 编程语言 无锁机制 java c# php 1. 为什么需要无锁操作1 2. 硬件支持 cas  atomic2 3. 无锁编程(Lock-Free)就是在某些应用 ...

  8. python的几种重要机制(垃圾回收机制,猴子补丁,反射机制,自省机制)

    python垃圾回收机制 垃圾回收机制要解决的问题 内存泄漏 悬空指针 引用计数 定义 环形链表中所存放数据的相同点和不同点 无法解决循环引用问题 标记清除 原理: 存在查找活动对象效率低下的问题 隔 ...

  9. SOCKET是调用操作系统通信服务的一种机制

    有没有SOCKET,网卡都会接收数据.网卡工作在数据链路层,它只认识链路上邻近的点.它甚至不认识它隔壁的隔壁,它又怎么可能知道传输层的信息呢(起点与终点,是传输层的信息)?...传输层的信息,只能由传 ...

  10. 微信支付配置参数:支付授权目录、回调支付URL

    一.开通微信支付的首要条件是:认证服务号或政府媒体类认证订阅号(一般认证订阅号无法申请微信支付) 二.微信支付分为老版支付和新版支付,除了较早期申请的用户为老版支付,现均为新版微信支付. 三.公众平台 ...

最新文章

  1. Windbg学习 (0x0002) 命令基础
  2. 2010 模板下载 罗斯文_俄罗斯人过年必看电影 | 新年枞树 @鱼子酱字幕组
  3. 关于骨骼动画及微软示例Skinned Mesh的解析
  4. Dajngo admin使用
  5. 如何正确的使用单例模式
  6. Creative Cloud启动不了
  7. 关于分布式一致性的探究
  8. bzoj 4552: [Tjoi2016Heoi2016]排序
  9. html:(1) 登录界面
  10. flowable 实现多实例-会签-动态配置人员 参考demo
  11. python自带的解释器叫做_21条python面试题,值得收藏!
  12. 软齿面主要失效形式_齿轮4种常见故障原因,如何采取预防措施,避免齿轮失效...
  13. 基于matlab的中值滤波算法浅析
  14. Linux安装ghostscript
  15. 配置NodeJS免安装环境变量,win7,win10
  16. 《老路用得上的商学课》1-15学习笔记
  17. C#窗体应用显示用户sa登录失败
  18. 12.计算机网络---iptables防火墙管理工具
  19. Tomcat修行之路-7.Tomcat-Mapper组件机制以及请求处理机制
  20. 学习单片机应该掌握的主要基本内容

热门文章

  1. excel如何把顺序倒过来_如何在筛选后的表里复制粘贴数据到同行
  2. python深度神经网络_深度神经网络 (第七部分)。 神经网络的融合: 堆叠
  3. php跳转图片_HTML点击图片跳转到新页面怎么实现?(示例)
  4. C++中void指针
  5. static 变量 作用域 全局变量 局部变量 外部变量 常量 volatile变量
  6. SmtpClient 类
  7. UltraEdit-32 温馨提示:右协会,取消 bak文件
  8. CSS 相邻选择器(七)
  9. rest framework 权限
  10. 容器云未来:Kubernetes、Istio 和 Knative