java 回调模式 (部分转载,部分原创)

VS Code配置MASM32汇编环境:从安装到调试的完整指南 本文提供了一份详尽的指南,教你如何在VS Code中配置MASM32汇编开发环境,实现从安装、环境变量设置到编写、编译和调试32位Windows汇编窗口程序的完整工作流。通过集成现代编辑器的便利性与经典汇编工具链,旨在降低学习门槛,提升底层开发效率。 阅读详情

“if you call me, i will call back”,说白了,就是有相互依赖关系的两个类之间的互相调用

package callBack;

public class Context implements A.Callback {   
  
    private A a;   
       
    public void begin() {   
        System.out.println("begin ...");   
    }   
  
    public void end() {   
        System.out.println("end ...");   
    }   
       
    public Context() {   
        this.a = new A(this);   
    }   
       
    public void doSomething() {   
        this.a.doIt();   
    }   
       
    public static void main(String args[]) {   
        new Context().doSomething();   
    }   
}   
package callBack

public class A {   
       
    private final Callback callback;   
       
    public static interface Callback {   
        public void begin();   
        public void end();   
    }   
    public A(Callback callback) {   
        this.callback = callback;   
    }   
    public void doIt() {   
        callback.begin();   
        System.out.println("do something ...");   
        callback.end();   
    }   
}  


上面的代码模型其原型是出自hibernate里的org.hibernate.jdbc.JDBCContext 和 org.hibernate.jdbc.ConnectionManager两个类,从上面的模型不难看出:Context类实现了A类的Callback接口,在Context类的构造器里将自己注入了A类,在Context类里调用A类的doIt()方法,这时就是:you call me;在doIt()方法体里调用了Context类的begin()和end()方法,这时就是:i call back。Context类 和 A类相互依赖,互相调用
在hibernate的源代码里大量使用了上面的callback回调模型,又如:org.hibernate.jdbc.JDBCContext 和 org.hibernate.impl.SessionImpl等等,可以自己去看源代码,这里不再赘述。

当然上面提到的模型中的两个类也可以写在同一个类里面,定义的Callback接口可以用内部匿名类来实现,比如下面的一个简单的dao实现:

package callBack;

import java.sql.Connection;   
import java.sql.DriverManager;   
import java.sql.SQLException;  
import java.sql.ResultSet;
 
public class Dao {   
    private interface Callback {   
        Object doIt(Connection conn) throws SQLException;   
    }   
    private Object execute(Callback callback) throws SQLException {   
        Connection conn = openConnection(); // 开启数据库连接   
        try { return callback.doIt(conn); } // 执行具体操作并返回操作结果   
        finally { closeConnection(conn); } // 关闭数据库连接   
    }   
       
    public Object sqlQuery(final String sql) throws SQLException {   
        return execute(   
            new Callback() {   
                public Object doIt(Connection conn) throws SQLException {   
                    ResultSet rs=conn.createStatement().executeQuery(sql);
                    while(rs.next()){
                        System.out.print(rs.getInt("id")+"\t");
                        System.out.print(rs.getString("userName")+"\t");
                        System.out.print(rs.getString("email")+"\t");
                        System.out.print(rs.getString("passWord")+"\t");
                        System.out.print(rs.getString("address")+"\t");
                        System.out.print(rs.getString("sex")+"\t");
                        System.out.print(rs.getString("work")+"\t");
                        System.out.println();
                    }
                    return rs;   
                }  
            }   
        );   
    }   
       
    public Connection openConnection() throws SQLException {   
        return DriverManager.getConnection("jdbc:mysql://localhost:3306/blog", "root", "root");   
    }   
    public void closeConnection(Connection conn) throws SQLException {   
        if(conn != null && !conn.isClosed()) {   
            conn.close();   
        }   
    }
    
    public static void main(String[] args){
        Dao dao=new Dao();
        try{
            String sql="select * from user";
            Class.forName("com.mysql.jdbc.Driver");
            dao.sqlQuery(sql);
            
        }catch(Exception e){
            e.printStackTrace();
        }        
    }
}  

用这种回调模式方便的把openConnection()和closeConnection()做了切片,从代码中剥离出来,使代码复用性更高,也更简洁



STM32新手必看:AHT20温湿度传感器实战指南(附完整I2C代码) 本文详细介绍了如何使用STM32驱动AHT20温湿度传感器,包括硬件连接、I2C通信协议解析、驱动代码优化及实战调试技巧。通过对比AHT20与DHT11、SHT30等传感器的性能,突出AHT20的高性价比优势,并提供完整的I2C代码示例,帮助新手快速上手嵌入式传感器开发。 阅读详情

相关推荐

DBeaver连接ClickHouse保姆级教程:从安装到成功测试(附驱动下载问题解决)

本文提供了一份详细的DBeaver连接ClickHouse实战指南,重点解决了驱动下载失败等常见问题。文章从环境准备、DBeaver安装讲起,详细阐述了手动配置ClickHouse驱动的可靠方案,并逐步指导完成连接配置与测试,最后介绍了基础操作与查询优化技巧,旨在帮助用户高效完成连接并快速上手使用。

pink的博客 877

java工厂模式三种详解(部分转载)

工厂方法模式(Factory Method) 工厂方法模式分为三种: 1、普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先看下关系图: 举例如下:(我们举一个发送邮件和短信的例子) 首先,创建二者的共同接口: [java]view plaincopy publicinterfaceSender{ publicvoidSe...

llussize的博客 9万+

实用软件工程(第2版)吕云翔编简答题部分答案(自用整理)

整理自用

m0_61217768的博客 4107

java回调机制及其实现

1. 什么是回调函数 回调函数,顾名思义,用于回调的函数。回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数。回调函数是一个工作流的一部分,由工作流来决定函数的调用(回调)时机。回调函数包含下面几个特性: (1)属于工作流的一个部分; (2)必须按照工作流指定的调用约定来申明(定义); (3)他的调用时机由工作流决定,回调函数的实现者不能...

dgit3228的博客 2041

STM32H5 USB虚拟串口:用Classic驱动移植CDC实践

USB虚拟串口(CDC)是嵌入式系统最常用的主机通信方式之一,本质是借助USB协议模拟串口收发,无需额外驱动即可在PC上生成COM口。其实现依赖USB设备协议栈完成枚举、控制传输与批量传输。传统USBD Classic库不依赖RTOS,代码轻量、调用链短,非常适合裸机或轻量状态机架构;而USBX功能强大但需要ThreadX内核,资源开销较大。在电机控制器、传感器采集等场景中,日志输出与参数配置仅需简单的双向数据通道,Classic驱动往往更务实。本文基于STM32H5平台,详细梳理了使用Classic驱动移

weixin_29178069的博客 334

CLion for Mac(m1)配置GCC编译器

条件:电脑已经下载过XCode 一. 下载HomeBrew homebrew是一款macos,linux下的包管理工具,我们需要使用他来下载GCC 下载方法: 1.打开终端(terminal) 2.输入 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ps.有可能会遇到的问题 我当初下载挂了VPN,优快云上还有很多解决问题的方法,可以将错误信

supermario19的博客 7845

java回调参数

Java回调参数:深入理解与应用 在软件开发中,回调函数是一种常见的设计模式,它允许在某个操作完成时自动执行一段代码。在Java中,回调参数的使用非常普遍,尤其是在事件驱动编程和异步编程中。本文将详细介绍Java回调参数的概念、应用场景以及如何实现回调。 回调参数简介 回调参数是一种特殊的参数,它允许在函数执行过程中调用另...

weixin_30522983的博客 156

OCSP环境搭建--Windows Server 2016

OCSP环境搭建--Windows Server 2016 一. OCSP环境中相关信息 1. 服务器1 操作系统:Win Server 2016 Standard版 IP地址:172.16.0.19/23,网关:172.16.0.1,首选DNS:127.0.0.1 服务器角色:域控制器、证书颁发机构、radius服务器、DNS服务器 ...

CsdnCHong_566的博客 3350

java回调机制的简易实现办法

java回调机制的简易实现办法 【转载,出自百度文库 贡献时间:2012-01-29 贡献者: sjailjq 崭露头角 三级 】   1.  什么是回调函数     所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数。回调...

iteye_7849的博客 162

利用ADS设计射频功率放大器

利用ADS设计射频功率放大器 任务: 用飞思卡尔公司的功率放大器芯片ATF27s006NT1设计射频功放,芯片频率范围可达450MHz-3.6GHz。 功放指标: (1) 工作频率:500MHz (2) 增益:G>20dB (3) 电源:+28V (4) 最大输出功率:2W(33dBm) 设计思路 (1)安装DesignKit模型; (2)直流DC扫描; (3)稳定性分析; (4)偏置电路设计及整...

UVM频率 3万+

通过分子模板构建随机分布在溶液中的纳米颗粒(一)

通过分子模板构建随机分布在溶液中的纳米颗粒 要实现的目标: 1、可以循环建立多个水分子溶液的模型; 2、针对不同水分子数,自动创建文件夹; 3、运行完毕将所有结果自动存储在对应文件夹里; 分子模板的具体教程请见我的博客: https://blog.youkuaiyun.com/qq_43689832/article/details/104443175 1、首先,我们先建立纳米颗粒的分子模板,命名为p_30.txt: 包括两种原子类型。具体格式如下: # LAMMPS molecule file makin.

Rockyoung 2650

【Java基础】回调函数

目录 一、定义 二、举例【观察者模式】 转载自:https://www.jianshu.com/p/b8a271728638 一、定义 回调的意义在于,通过在其他对象中调用自身类中定义的函数,达到一定的目的(常见于事件注册,监听以及线程Runnable中的run)。 回调函数定义: 传递一个函数A到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数。如果没有名...

ZHAOJING1234567的博客 391

SPD-Conv+YOLOv8:空间深度转换卷积赋能小目标检测,从原理到实战的科研级优化指南

从理解SPD-Conv“空间到深度+逐步卷积”的核心设计,到亲手将其嵌入YOLOv8并验证在小目标场景的表现,再到基于此探索属于自己的科研与工程方向——这个过程能让你深刻理解“小目标特征保留”在检测任务中的核心价值。现在就开始行动,相信你会在小目标检测的“细节捕捉”之路上,走出一条属于自己的技术路径。实验通常会证明:嵌入SPD-Conv后,YOLOv8在小目标AP上提升5-8个百分点,mAP50-95提升3-5个百分点,而推理速度仅下降5%以内,充分体现了其“保细节+提精度”的优势。

m0_64661770的博客 161

java中接口实现回调方法带参

我整理的一些关于【java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/bLN8S1Java中接口实现回调方法带参 在Java编程中,回调是一种强大且有效的设计模式。回调可以被广泛应用于异步处理、事件监听、以及其他需要方法间解耦的场景。本文将探讨如何在Java中利用接口实...

weixin_32677301的博客 237

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java如何配置接口回调

Java接口回调配置方案 在Java开发中,接口回调是一种常见的设计模式,它允许一个对象在完成某些操作后通知另一个对象。这种模式在处理异步操作、事件驱动编程等方面非常有用。本文将介绍如何在Java中配置接口回调,并提供一个具体的示例。 问题描述 假设我们有一个电商网站,用户在下单后需要通知第三方支付平台进行支付处理。我们需...

weixin_31363913的博客 240

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

接口回调与方法回调

接口回调与方法回调

qq_43530326的博客 4677

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

JAVA 设计模式-回调模式

转载于http://www.2cto.com/kf/201503/385522.html 还可以参考一篇 : http://blog.youkuaiyun.com/cauchyweierstrass/article/details/44593807 感谢 开发Android已有两年了,说来惭愧,回调虽然随处可见,并且网上关于回调函数和接口回调的内容很多,可一直没弄明白,总结不明白的

qq1164014750 1万+

java回调函数

安卓中回调函数的理解

leezhiyuan的专栏 493

java 实现回调

Java 实现回调机制 回调机制是一种常见的编程模式,它允许一个函数在执行完成后,通知调用者执行另一个函数。在Java中,回调可以通过接口、匿名类或Lambda表达式实现。本文将详细介绍Java实现回调的几种方式,并提供示例代码。 回调的概念 回调是一种设计模式,它允许程序在某个事件发生时,自动执行一段代码。这种模式在很多...

weixin_41949949的博客 402

模版模式和回调模式

原创内容,转载请注明出处 1、模版模式 模版模式,顾名思义,是指将一些通用的行为实现都已完成,然后一些可变的行为交由我们来实现完成。在实际生活中有很多这样的例子,比如填写合同协议或者其他文件,文件上已经有通用的信息,我们只需要填写我们的个人信息并且签名即可,该文件就是一个模版。 UML类图表示  创建父类SuperClass package com.test.designermode...

iteye_17810的博客 163

java的回调函数

关键词: Java 回调函数 CallBack Java中的"回调函数"一般是用接口来实现的,如 public class Test{ public static void main...

cichaojiao4477的博客 274

java 设计模式实战,合成模式之神奇的树结构

java 设计模式实战,合成模式之神奇的树结构

二当家的白帽子 751

Java 消息机制之回调详解

Java 中的回调机制是一个比较常见的机制,只是有可能在你的程序中使用得比较少,在一些大型的框架中回调机制随处可见。而在之前的博文《Java设计模式——观察者模式》及 Android 中对 ListView 的相关操作也有回调身影。本文就通过一些具体的实例,慢慢走近 Java 的回调机制。

大鱼 9055

浅析java callback 回调模式

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34067049的博客 99

java设计模式(部分转载)

23种设计模式部分 oop七大原则 开闭原则:对扩展开放,对修改关闭 里氏替换原则:继承必须确保超类所拥有的性质在子类种仍然成立 依赖倒置原则:要面向接口编程卖不要面对现实编程 单一职责原则:控制类的粒度大小,将对象解耦,提高它的内聚性 接口隔离原则:要为各个类建立他们需要的专用接口 迪米特原则:至于你的直接朋友交谈,不跟“陌生人”说话 合成复用原则:尽量先使用或者聚合等关联关系来实现,其次在考虑使用继承关系来实现 创建型模式 单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式 单例模式 单例模式注意点

qq_44741982的博客 152
上一篇: java 回调模式 (部分转载,部分原创)
下一篇: Servlet 工作原理
coollor
博客等级 码龄15年 48粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值