彻底把回调的各种的使用都弄明白了,呵呵,记录一下。当然下面的回调是最粗浅的使用方式,昨天看了老外写的callback,那真是鬼斧神工呀,哎,国内的程序员和国外的程序员始终不是一个档次的,还是努力学习吧。
客户端有一段本地代码,这段代码需要在客户端请求服务端执行完某个操作后由服务端调用,这段本地代码就是回调函数。
为什么叫回调?
client先请求server执行服务端的某个方法S,在服务端执行S()完毕之后,由server端反过来调用client端的方法C().
简单举个例子,例如Ext.Ajax.request的异步请求,client向服务端执行请求request,服务端根据请求执行某个操作S,S执行完毕之后回调client的两个方法:success()和fail(),success和fail都是回调方法。当server执行S完毕之后,通知client执行。
借了老外的图用一下:

实现过程:
(1)将客户端需要被回调的代码callBackMethod()封转成CallbackIntf。
(2)服务端要回调客户端的代码,则必须持有客户端对象的引用,即客户端需要向服务端注册。
(3)各种不同类型的client分别实现CallbackIntf,则每个客户端都有callBackMethod()。同时,服务端需要提供执行callBackMethod()的入口.
实现方式上,可以通过向服务端注册回调接口(通过组合方式实现)以及匿名内部类的方式实现。
1、通过注册方式实现(向服务端注册
实现回调接口的类)
package com.zhaoyp.callback.demo03;
//回调接口
public interface CallbackIntf
{
public void callBackMethod();
}
package com.zhaoyp.callback.demo03;
//客户端
public class Client implements CallbackIntf
{
//普通函数
public void directMethod()
{
System.out.println("client request for server..");
}
//回调函数
@Override
public void callBackMethod() {
System.out.println("client callback code execute..");
}
}
package com.zhaoyp.callback.demo03;
public class Server
{
//服务端持有客户端引用
private Client object;
//向服务端注册客户端
//这里是一个典型的setClient()方法
public void register(Client obj)
{
this.object = obj;
}
//服务端执行回调
public void executeCallBack()
{
object.callBackMethod();
}
//服务端的方法
public void service()
{
System.out.println("server service()..");
}
}
package com.zhaoyp.callback.demo03;
public class CallbackTest
{
public static void main(String[] args)
{
Client client = new Client();
Server server = new Server();
//客户端向服务端注册,让服务端知道客户端的回调函数
server.register(client);
//客户端发送请求给服务端
client.directMethod();
//服务端处理请求
server.service();
//请求完毕之后,由服务端执行回调函数
server.executeCallBack();
}
}
2、通过匿名内部类方式实现
这种方式是根据具体的使用去生成匿名的客户端,即客户端成了一个匿名内部类。实质不变,可是形式变化很大。
回调接口不变
package com.zhaoyp.callback.demo06;
//回调接口
public interface CallbackIntf
{
public void callbackMethod();
}
普通方法执行完毕后,由
服务端执行回调函数
package com.zhaoyp.callback.demo06;
public class Server
{
//执行回调
public void executeCallback(CallbackIntf client)
{
client.callbackMethod();
}
//普通方法
public void service()
{
System.out.println("do service()..");
}
}
package com.zhaoyp.callback.demo06;
//测试类
public class CallbackTest
{
public static void main(String[] args)
{
Server server = new Server();
server.service();
//通过匿名内部类执行回调操作,匿名内部类相当于前面的client
server.executeCallback(new CallbackIntf() {
@Override
public void callbackMethod() {
System.out.println("inner class callback..");
}
});
}
}
回调模式在Ajax请求,RMI中应用的非常广泛,昨天在国外论坛上看到一个老外写的一篇帖子,非常之佩服。

- 大小: 15.5 KB
分享到:
相关推荐
Java回调函数是编程中一种非常重要的设计模式,它允许一个对象在另一个对象完成特定操作后进行通知或执行相应的处理。这种机制使得代码更加灵活,解耦了调用者和被调用者的依赖关系,通常用于事件处理、异步编程、...
在Java编程中,回调函数是一种设计模式,它允许一个对象在另一个对象执行特定操作后接收通知或进行处理。这种机制通常用于事件驱动编程或者异步编程中,使得代码能够响应某些特定事件的发生。在给定的场景中,我们...
### Java回调函数的理解 #### 一、回调函数的概念与应用场景 在计算机编程中,回调是一种常用的编程模式,尤其是在异步编程场景中。简单来说,回调指的是一个函数或方法被另一个函数调用,作为参数传递进去。这种...
Java回调函数是编程中一种常见的设计模式,它允许一个对象在其他对象完成特定操作后进行通知或介入。这种模式在Java中广泛应用于事件处理、异步编程和接口交互。本资料"Java回调函数详解共6页.pdf.zip"将深入探讨这...
Java回调函数是编程中一种常见的设计模式,它允许一个对象在其他对象执行特定操作后接收通知或进行相应的处理。在Java中,回调机制通常通过接口或者实现类来实现,这使得代码具有更好的灵活性和可扩展性。本篇将深入...
Java 回调函数详解 前言: C语言中回调函数解释: 回调函数(Callback Function)是怎样一种函数呢? 函数是用来被调用的,我们调用函数的方法有两种: 直接调用:在函数A的函数体里通过书写函数B的函数名来调用...
下面我们将深入探讨Java回调函数的概念、实现方式以及使用技巧。 首先,理解回调函数的基本原理非常重要。回调函数本质上是一种将控制权转移的技术,使得调用者可以在适当的时间调用被调用者提供的函数。在Java中,...
Java面试如何用Java实现一个回调函数
Java自定义回调函数是软件开发中的一个重要概念,尤其是在Android和SDK开发中,它极大地提高了代码的灵活性和可扩展性。回调函数允许一个方法在完成特定操作后通知另一个方法,这种设计模式在异步编程和事件处理中...
Java回调函数实例代码详解 Java回调函数是一种编程模式,允许程序员在程序中定义一个函数,并将其传递给另一个程序,以便在需要时被调用。这种编程模式广泛应用于Java中,特别是在事件驱动编程、异步编程和多线程...
通过具体实例展示了同步和异步回调函数在Java程序中的应用场景,如事件处理、多线程操作和第三方库的集成。同时阐述了如何利用接口和Java 8的Lambda表达式实现高效的回调机制。 适合人群:具有初级及以上Java编程...
总的来说,Java回调函数通过接口和对象的交互,实现了代码间的协作,让服务程序可以在特定时刻调用客户程序提供的逻辑,极大地增强了程序的灵活性和可扩展性。理解并熟练运用回调函数是成为高级Java开发者的必备技能...
本示例将深入探讨Java回调函数,并通过一个Android小程序来展示其用法。 首先,理解Java回调函数的基础概念。回调函数本质上是将一个函数作为参数传递给另一个函数,待特定条件满足或特定事件发生时,被调用的函数...
回调函数在Java编程中是一种常见的设计模式,它允许一个对象在特定事件发生时通知其他对象。这个机制使得代码能够实现异步处理、事件驱动和松耦合,是理解和使用Java库或框架时不可或缺的知识点。回调函数的核心在于...
### 回调函数被连续执行两次或多次的原因 在编程领域,回调函数是一种常见的编程模式,它允许将函数作为参数传递给另一个函数,并在适当的时机由后者调用。这种模式非常有用,尤其是在处理异步操作时。然而,在某些...
Java多线程实现 自定义 的 回调函数. 手写 完成,亲测 完成,可以 直接运行,Demo ,具有一定参考价值,供大家阅读 下载,谢谢
在Java编程中,回调函数是一种设计模式,它允许我们在代码执行过程中插入自定义的行为,特别是在异步编程或者事件处理中非常常见。回调函数的核心思想是将一个函数作为参数传递给另一个函数,然后在适当的时候由被...
Java回调函数,也称为Callback机制,是面向对象编程中一种重要的设计模式,它允许一个对象在其他对象执行特定操作后得到通知或者进行后续处理。在Java中,回调通常通过接口来实现,因为Java不支持函数指针。让我们...
【Java回调函数详解】 回调函数在编程中是一个重要的概念,尤其在处理异步操作或事件驱动的编程模型中。回调函数本质上是一种设计模式,允许我们将一个函数(或方法)作为参数传递给另一个函数,以便在特定时机被...