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. 09. jenkins配置不同用户显示不同视图

    jenkins配置不同用户显示不同视图 一.新建用户 1.1 新建用户 Manage Jenkins -> Manage Users -> 新建用户     1.2 我创建了三个用户,分别 ...

  2. Spring Boot入门,源码解析

    目录 1.Spring Boot简介 2.微服务 3.Spring Boot HelloWorld 3.1 创建一个Maven工程 3.2 导入依赖Spring Boot相关的依赖 3.3 编写一个主 ...

  3. 【吴恩达课程使用】pip安装pandas失败-anaconda各种玄学T-T-从新开始搭建环境

    [吴恩达课程使用]安装pandas失败-从新开始搭建环境 在第五课第二周的任务2中,虚拟环境缺少pandas,sklearn依赖,因为用pip比较顺手,就直接使用pip安装,结果各种anaconda环 ...

  4. Java面试必问之-JUC

    JUC:java.util.concurrent (Java并发编程工具类) 代码:D:\JAVA\Java_Learning\Elipse_Project\workspace200301EE\JUC ...

  5. JDK15真的来了,一起来看看它的新特性

    目录 简介 JDK15的新特性 JEP 385 Deprecate RMI Activation for Removal JEP 371 Hidden Classes JEP 339 Edwards- ...

  6. Java体系结构介绍

    Java技术的核心就是Java虚拟机——所有Java程序都在其上运行,需要Java虚拟机.Java API和Java,class文件的配合,Java程序才能够运行   为什么使用Java 通过网络连接 ...

  7. netty字节分包

    高并发压测时,发现来自网关的消息出现粘包现象:分包就是势在必行的 前置和处理平台(暂时)使用netty通话,由于都是服务器平台使用DelimiterBasedFrameDecoder来解决分包 和网关 ...

  8. Redis学习(四)redis发布订阅

    文章更新时间:2020/04/22 一.简介 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. ...

  9. Oracle 中 Start With 关键字

    Start With (树查询) 基本语法如下: SELECT ... FROM + 表名 WHERE + 条件3 START WITH + 条件1 CONNECT BY PRIOR + 条件2 -- ...

  10. 微服务分布式电商项目学习笔记(三)---- docker介绍安装以及使用docker安装软件(2020/7/10)

    其实在介绍docker的使用和安装之前应该还要介绍虚拟机的安装与配置,以及虚拟网络的配置,但是我使用的是vmware,而视频课使用的是vagrant,这一块我简看的,因此没有过多的介绍,至于vmwar ...