时间:2023-04-18
标签: #Java #回调 #异步编程 #事件驱动编程 #接口 #自定义行为 #编程模式
回调(Callback)是一种编程模式,它允许将一个函数(或方法)作为参数传递给另一个函数(或方法)。当被调用的函数执行完毕后,会调用传递进来的回调函数,以完成某些特定任务或通知调用者任务已完成。这种编程方式在异步编程、事件处理和自定义函数行为等场景中非常有用。
关于 Java 没有回调的说法,并不准确。Java 实际上支持回调,但它实现回调的方式与其他语言(如 JavaScript)略有不同。在 Java 中,我们通常使用接口来实现回调。以下是一个简单的例子:
interface Callback {
void onFinished(String result);
class Worker {
void doWork(Callback callback) {
String result = "任务完成";
callback.onFinished(result);
public class Main {
public static void main(String[] args) {
Worker worker = new Worker();
worker.doWork(new Callback() {
@Override
public void onFinished(String result) {
System.out.println("回调结果: " + result);
});
在这个例子中,我们定义了一个名为 Callback
的接口,然后在 Worker
类的 doWork
方法中接受一个实现了 Callback
接口的对象。这样,在 doWork
方法完成任务后,可以调用回调函数 onFinished
。
回调的主要机制和好处如下:
-
异步编程:回调使得程序可以在执行耗时操作时,不阻塞其他操作的进行。一旦耗时操作完成,回调函数会被触发,从而实现异步编程。
-
事件驱动编程:回调可以用来实现事件驱动编程,当特定事件发生时触发相应的回调函数。这种方式使得代码更具可扩展性和可维护性。
-
自定义行为:通过将回调函数作为参数传递,可以让调用者自定义函数的行为,提高代码的复用性和灵活性。
虽然回调有很多好处,但过度使用回调可能导致代码变得难以理解和维护,这种现象被称为“回调地狱”。为了解决这个问题,可以使用更高级的抽象概念,如Java中的Future
、CompletableFuture
和Stream
等。
回调介绍所谓回调,就是客户程序Client调用服务程序Service中的某个方法A,然后Service又在某个时候反过来调用Client中的某个方法B,对于Client来说,这个B便叫做回调函数。
回调的如何实现的呢java的回调是通过接口或者内部类来实现的。JAVA方法回调是功能定义和功能实现分享的一种手段,是一种耦合设计思想。作为一种架构,必须有自己的运行环境,并且提供用户的实现接口。代码案例
------>利用这个公共接口,B就可以调用A的方法
用一个实例来实现以下回调机制:
一对夫妻在睡觉,妻子醒来了,迷糊的拍了拍丈夫的手臂,问:“现在几点啦?”。 丈夫刚醒,也不知道时间,说:“我也刚醒啦,我看一下闹钟”。十秒钟后丈夫看了时钟,回到妻子,“现在早上8点啦,起床了”。
我们来分析一下一个案例:
1. 什么是回调函数
回调函数,顾名思义,用于回调的函数。回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数。回调函数是一个工作流的一部分,由工作流来决定函数的调用(回调)时机。回调函数包含下面几个特性:
(1)属于工作流的一个部分;
(2)必须按照工作流指定的调用约定来申明(定义);
(3)他的调用时机由工作流决定,回调函数的实现者不能...
1. 什么是回调函数
回调函数,顾名思义,用于回调的函数。回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数。回调函数是一个工作流的一部分,由工作流来决定函数的调用(回调)时机。回调函数包含下面几个特性:
(1)属于工作流的一个部分;(2)必须按照工作流指定的调用约定来申明(定义); (3)他的调用时机由工作流决定,回调函数的实现者不能直接调用回调函数来实现工作...
文章目录为什么需要事件委托?Java实现实例
为什么需要事件委托?
之前的观察者模式我们都知道,多个观察者观察同一个主题对象,主题对象发生变化时通知所有的观察者对象,观察者执行一样的update方法。
但是我想根据触发的事件,让观察者有不同的动作,并且实现通知者和观察者的完全解耦,这个如何实现呢?
举个例子:
有一个热水器,热水器上有响铃和显示器。当水温度超过设定的温度之后,显示器进行显示温度,并...