摘自网络:
回调函数:A调用B,同时传A给B。B执行完会调用A的方法(回调)。
目的就是:A发起调用B,B处理完一些事情,再回调执行A的一些操作。
两者关系:A和B是关联关系。
===============================
这个类相当于B(B执行完会调用A的方法)。
public class Caller {
private MyCallInterface callInterface; //接收实现接口的对象
public void setCallFunc(MyCallInterface callInterface) {
this.callInterface = callInterface;
}
public void call() { //回调函数
callInterface.printName();
}
}
----接口
public interface MyCallInterface {
public void printName();
}
---相当于A类,被B类回调。
public class Client implements MyCallInterface {
public void printName() {
System.out.println("This is the client printName method");
}
}
-----回调开始 重要
public class Test {
public static void main(String[] args) {
Caller caller = new Caller();
caller.setCallFunc(new Client()); //实现接口的具体对象作为参数
caller.call(); //调用参数中的具体方法
}
}
=================补充:JAVA代理模式
首先说明下代理模式的需求:一组类都实现同一个接口,但是其中一些还需要自己的方法,为了取代手动给他们单独添加方法的做法,就有了代理;原理就是:把需要添加的方法的类,交给一个新的类,这个类不改变原有的类基础上,做到添加特有的方法。AOP就是这个原理。代理类其实就是对原有类封装后再升级。
具体查看:http://www.cnblogs.com/tiantianbyconan/archive/2012/11/20/2779095.html
静态代理:被代理的类可以直接并且很明确地将告诉(传递)代理类自己的具体对象。
动态代理:被代理类不能直接告诉代理类有关自己对象的信息,智能提供部分信息,剩余的部分需要代理类根据已有信息动态生成被代理类。
-----代理与回调的区别:
代理,代理类能够代表被代理的前提下(代理类要实现被代理的接口,作为我的代理人,起码得跟我某些重要方面是一个立场吧!)。最终执行我固有方法的类,外貌跟我相似。我是主角。
回调,最终执行我固有方法的类,外貌不强调(你可以不实现我实现的接口)。强调的是,你执行的时候一定要叫上我(一般的回调函数,就做callback,意思就是,喂!该你了!),而作为我也是要传递自己的对象给人家。人家是主角。
----代理与回调的相似:都通过别人来执行自己固有的方法。
代理与回调主要关注的别人怎么来调你。代理调用自己的方法,方法名跟自己一样;回调调用自己的方法,方法名没要求。
转载于:https://blog.51cto.com/seasky09/1748916