java中接口实现回调方法

在学习过程中,看Java源码时,经常出现一个词就是回调方法,网上查看别人解释,五花八门,看得人云里雾里,通过揣摩理解,在这里我来说一说我的理解。
一、回调方法概念
举例说明
java中接口实现回调方法_第1张图片
图中是这么个场景,类A实现时要调用类B的b(),这时我们会怎么做呢,我们直接在类A中实例化一个类B对象b,然后调用b.b(),我们叫这种调用为直接调用;但是此时类B中b()的实现,要依赖于类A的a()方法,我们叫这个方法a()为回调方法,这就是回调方法概念。
我们发现这种2个类之间相互调用,这种设计不利于代码维护,因为改了类A的代码,可能就要改类B代码,相反也一样。有没有方法避免这种情况呢?使A、B之间相对独立,Java中可以采用接口实现回调,我们来看一看.
二、接口实现回调
接口定义

public interface CallBack {
    public void a();
}

类A定义

public class A implements CallBack {
    //持有B的引用
    public B bb;
    @Override
    public void a() {
        System.out.print("Hello my name is A");
    }
}

类B定义

public class B {
    public CallBack callBack;
    public B(CallBack callBack){
        this.callBack = callBack;
    }
    public void b(){
        //只关注接口,与实现接口的类A隔离、解耦,提高代码灵活性,可复用性,
        callBack.a();
    }
}

我们来测试下

public class Test{
    public static void main(String[] args){
        A a = new A();
        B b = new B(a);
        a.bb = b;
        a.bb.b();
    }
}

三、结论
使用接口实现回调的方式可以使各模块实现解耦,提高代码的灵活性与可复用性。

你可能感兴趣的:(Java基础知识)