Java专家之路(九)-- 面向对象的基础概念和原理,使用回调机制实现对象之间通信

本文探讨了面向对象中对象间通信的基础概念,区分了本地和远程通信方式。重点讲解了回调机制,澄清了常见的误解,阐述了回调的本质和相关概念,如异步、事件驱动编程和设计模式。并详细介绍了Java中回调的实现,包括接口回调的机制和相关应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础概念理解:

什么叫对象间的通信?

通俗来讲,就是a 对象 调用 b 对象的方法(接口)

界定范围:哪些对象的通信?

本地:在同一个jvm内,称为本地对象的方法、接口调用
远程:在不同的jvm中,称为远程的方法、接口调用

对象间通信的方式:

同步:单向,阻塞式的调用
回调:双向(分阻塞、非阻塞两种)
异步:双向,且非阻塞。所以,由此可见,回调和异步通常是成对出现。回调是异步的基础,异步是回调的一种表现形式。

对于回调进行定义:

在计算机程序设计中,回调函数,或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数),是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。

常见的一些对于回调的偏见或者错误认知

以偏概全:
例一:GUI编程中,一个按钮被点击之后要做点事情,大家可以注册个ActionListener上去监听点击事件,在点击时被调用,这就是一个回调。
例二:例如说java.util.Collections.sort(List, Comparator),这个sort()方法就定义了一个流程实现排序,而具体的顺序则由传入的Comparator参数来确定——这就是回调。

其实,上面两个例子,都没有错。但是,都发生了以偏概全的错误定义。

望文生义:
在这里插入图片描述
混淆概念:
当遇到一些IO或者延迟等需要耗用时间的操作,我们一般采用回调的方式来完成。就是你委托JVM或者操作系统做一些事情,他们做好了,就会回调你的方法让你去处理。

小结:那么如何全面认知一个概念,或者说如何科学地给一个概念下定义呢?一般来说,我们定义一个概念,从内涵和外延两个方面进行说明。

内涵(本质)

就是一个可执行代码块的引用,或者说内存地址,或者说是指针,其实都是一回事儿。
(备注:可执行代码块,它有很多别名,例如: 函数/方法/过程/事件对象/委托,这些概念其实都是一回事儿)

外延(相关的概念,延伸的意义)

在这里插入图片描述
1、回调和相关设计模式(观察者、访问者、……)的关系:
模式,是通过接口回调的方法实现的,即它是一种回调的体现。
而回调,本身是一种原理,机制。而非具体的实现。

2、与异步同步的关系:回调分为异步的回调、同步的回调。经常和异步成对出现。

3、和事件驱动(event、listener)的关系:回调,是事件驱动编程的实现的基础原理。委托是c#中的概念,其实和匿名函数、java中的函数式接口、接口回调是同一个概念的不同表达形式。他们都是用来实现事件驱动编程(控制框架)的核心。

4、和javaEE的web编程servlet中filter技术的关系:filter技术是回调机制的具体应用场景之一,filter核心技术:基于回调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值