Java 本身没有回调这一说,但是面向对象可以模拟出来。

1. 回调接口对象 ICommand

package com.git.Cmder;

public interface ICommand {
void execute(); // 1. Think in callback, void (*)pf()
}

2. 回调对象关联哪些,这个就是 c 中的 pf 赋值

package com.git.Cmder;
/*
将 command 和 receive 关联起来
*/
public class ConcreteCommand implements ICommand {
Receiver receiver; // // 1. Think in callback, func public void setReceiver(Receiver receiver) {
this.receiver = receiver; // // 1. Think in callback , pf = func
} public void execute() {
receiver.action(); // 1. Think in callback, call func
}
}

3. 关联对象 pf 的具体实现

package com.git.Cmder;

public class Receiver {
public void action(){ // 1. Think in callback, func 的内容
/* 具体做的工作 */
System.out.println("Receiver Do.");
}
}

4. cb 的注册和调用封成一个对象 Invoker

package com.git.Cmder;
/*
调用者, 业务接口层
*/
public class Invoker {
private ICommand iCommand;
// 1. Think in callback, cb 的入口, register
/* 这里传子类过来,就调用子类的方法 */
public void setiCommand(ICommand iCommand) {
this.iCommand = iCommand;
} // 1. Think in callback, cb 的入口, call
public void action(){
iCommand.execute();
}
}

5. 测试

package com.git.Cmder;

public class Client {
public static void main(String[] args) {
Receiver receiver = new Receiver(); // 真实的工作者 ConcreteCommand command = new ConcreteCommand(); // 2, 这里主要用的是 子类实现,调用子类的方法,接口定义的是父类,这样所有的子类都可以用了 command.setReceiver(receiver); // 2.1
Invoker invoker = new Invoker(); // 1
invoker.setiCommand(command); // 1.1
invoker.action();
}
}

这里主要用父子类的关系来实现,定义一个cb 对象,对象包含一个父类接口对象,和"父类接口对象的调用", 用语言本身的提供的多态特性(其实内存中的地址还是一个), 不同的子类有不同的实现, cb 对象可以看做 n 个方法的管理者,当你传入一个子对象,调用其方法,说了半天还是一个 key-val ,只不过管理者由程序员自己来管理了。

java 的 callback的更多相关文章

  1. 谈谈我对Java中CallBack的理解

    谈谈我对Java中CallBack的理解 http://www.cnblogs.com/codingmyworld/archive/2011/07/22/2113514.html CallBack是回 ...

  2. Java学习之Java实现CallBack功能

    回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数.而那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利用这个机会在 ...

  3. 最简单的Java框架

    框架framework的目的是定义骨架式方案,处理各种相同的底层细节:而开发人员使用框架时,能够依照自己的需求实现自己的功能--仅仅须要填入自己的东西/flesh. 最简单的框架,类似于JUnit,它 ...

  4. JAVA Native Interface (JNI)

    1.  Introduction At times, it is necessary to use native (non-Java) codes (e.g., C/C++) to overcome ...

  5. java高级用法之:JNA中的回调

    目录 简介 JNA中的Callback callback的应用 callback的定义 callback的获取和应用 在多线程环境中使用callback 总结 简介 什么是callback呢?简单点说 ...

  6. Scalaz(47)- scalaz-stream: 深入了解-Source

    scalaz-stream库的主要设计目标是实现函数式的I/O编程(functional I/O).这样用户就能使用功能单一的基础I/O函数组合成为功能完整的I/O程序.还有一个目标就是保证资源的安全 ...

  7. 模拟DbUtils实现接口回调机制

    想必大家都用过apache 的DbUtils吧,这个简单的对JDBC的封装小框架真的是非常非常的适合新手的学习呢.逻辑上也不是很复杂,难度刚刚好. 下面我就模仿它来实现一个字符串的处理小框架. 思路 ...

  8. 浅析android系统设计中的回调思想

    一.为何写作本文  在慢慢深入接触android开发的过程中,我越来越发现android中(至少应用曾的开发)用到了很多回调的思想.比如activity的生命周期,fragment的生命周期,皆是回调 ...

  9. JNI学习笔记_Java调用C —— 非Android中使用的方法

    一.学习笔记 1.java源码中的JNI函数本机方法声明必须使用native修饰. 2.相对反编译 Java 的 class 字节码文件来说,反汇编.so动态库来分析程序的逻辑要复杂得多,为了应用的安 ...

随机推荐

  1. 一文看懂 YAML

    前言 YAML 并不是一种新奇的语言,YAML 首次发表于 2001 年,距离现在已经过去差不多 20 个年头.YAML 虽然不如 JSON.XML 之类的语言流行,应用也没有那么广泛,但是 YAML ...

  2. shell中列表的定义与循环

    字符串列表定义方法1: a=(f1 f2 f3 f4) for i in ${a[*]}#遍历每一个列表值 for i in ${a[@]}#遍历每一个列表值 实例: #!bin/basha=(f1 ...

  3. Mockito在JUnit测试中的使用

    Mockito是一种用于替代在测试中难以实现的成员,从而让testcase能顺利覆盖到目标代码的手段.下面例子将展示Mockito的使用. 完整代码下载:https://files.cnblogs.c ...

  4. 关于h5游戏开发,你想了解的一切都在这儿!

    ​2020年,受疫情影响,线下产业红利褪去,线上迎来的新一轮的高峰.众多商家纷纷抓住了转型时机,开启了流量争夺战.H5游戏定制无疑是今年引流的大热门.如何开发一款有趣.有爆点.用户爱买单的好游戏呢? ...

  5. Linux:安装禅道

    一.准备工作 禅道安装包ZenTaoPMS.8.1.3.zbox_64.gz,上传至服务器:rz命令 解压到指定目录  tar -zxvf ZenTaoPMS.8.1.3.zbox_64.gz -C ...

  6. jenkins 下载插件失败 有效的处理办法(亲测)

    jenkins 下载插件失败,提示: java.io.IOException: Downloaded file /app/jenkins_home/plugins/jacoco.jpi.tmp doe ...

  7. JUC使用

    1.什么是JUC 源码 + 官方文档 面试高频问! java.util 工具包.包.分类 业务:普通的线程代码 Thread Runnable 没有返回值.效率相比入 Callable 相对较低! 2 ...

  8. vue-ajax/axios请求函数封装: axios+promise

    项目文件目录/src/api ajax.js /** * ajax 请求函数模块 * 返回值为promise对象 */ import axios from 'axios' export default ...

  9. JVM垃圾收集机制

    JVM垃圾回收机制是java程序员必须要了解的知识,对于程序调优具有很大的帮助(同时也是大厂面试必问题). 要了解垃圾回收机制,主要从三个方面: (1)垃圾回收面向的对象是谁? (2)垃圾回收算法有哪 ...

  10. 五分钟带你读懂 TCP全连接队列(图文并茂)

    爱生活,爱编码,微信搜一搜[架构技术专栏]关注这个喜欢分享的地方. 本文 架构技术专栏 已收录,有各种视频.资料以及技术文章. 一.问题 今天有个小伙伴跑过来告诉我有个奇怪的问题需要协助下,问题确实也 ...