Java回调函数理解与运用

/**
 *Java回调函数
 *  A 接口主要目的 定义回调函数(C) 传入回调函数(C)到接口B
 *  B 处理自己的业务逻辑 合适的时候 调用回调函数(C)传递给A
 *  其他情况: 定义回调函数可以传入这个回调函数实例化对象与回调函数
               (其实就是接口或者接口实例对象)
 *          
         (忽略) 如果A 实现回调函数接口 在回调函数接口方法实现类赋值(处理自己的业务逻辑)就行了
 *
 *       如果函数接口 自己实现的(匿名内部类,独自实现) 在A接口定义函数接口 方法中操作
 */
// 定义服务接口A
public class  ServiceA implements  ServiceA  {
    public void doSomething(ServiceB serviceB) {
        //第一种 定义回调函数
        Callback callback = new Callback() {
            @Override
            public void onResult(String result) {
                // 处理结果
                System.out.println("Result: " + result);
            }
        };
       // 调用服务B,并将回调函数传递给服务B
        serviceB.doSomethingAsync(callback);
     
}
 //第二种 定义回调函数
      //public class  ServiceA implements  ServiceA,Callback  {//自己实现callback
      // public void doSomething(ServiceB serviceB) {
       
      // 调用服务B,定义回调函数,并传入服务B
         //serviceB.doSomethingAsync(this);
     //}


    }

// 定义服务接口B
public class ServiceBImpl implements ServiceB {
    public void doSomethingAsync(Callback callback) {
        // 异步执行操作,并在合适的时机调用回调函数
        // 将B结果传递给回调函数
        String result = "Some result";
        //调用回调函数
        callback.onResult(result);
    }
}

// 定义回调接口
public interface Callback {
    void onResult(String result);
}

总结起来:

  • 调用方:定义回调函数并将其传递给被调用方。
  • 被调用方:在适当的时机调用回调函数,将结果传递给调用方

优点:

  • 解耦性:回调函数可以将调用方和被调用方解耦,使它们可以独立开发和维护,减少模块之间的依赖性。
  • 灵活性:回调函数提供了一种灵活的处理方式,调用方可以根据需要定义不同的回调函数实现,满足不同的业务需求。
  • 异步处理:回调函数适用于处理异步操作的结果,可以在耗时操作完成后通知调用方,避免阻塞线程或等待操作完成。
  • 扩展性:通过定义回调函数的接口或抽象类,可以方便地扩展和替换不同的回调函数实现,增加系统的灵活性和可扩展性。

缺点:

  • 复杂性:使用回调函数可能增加代码的复杂性,特别是在处理多层嵌套回调时,容易导致代码难以理解和维护。
  • 难以调试:回调函数的执行流程比较复杂,当出现问题时,调试和定位错误可能会比较困难。
  • 可读性差:回调函数可能导致代码的执行顺序变得难以预测和理解,对于阅读代码的其他开发人员来说,可能会增加理解的难度。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值