2.回调函数
回调函数的好处就是可以实现调用者与被调用者之间的解耦,对具体的调用过程进行了封装,我们只需要关心后面的实现过程。
对于动态代理而言,用到回调函数的部分就是代理类调用方法:
userManager.test();
当代理类userManager调用test()方法时,就会触发调用前面说的this参数(即LogHandler类)的invoke方法,而具体的invoke方法中又通过method.invoke()方法来调用真实类UserManagerImpl类的test()方法的过程是被封装好的,客户端是不知道的,所以客户端只需通过调用代理类的方法就可以直接调用真实类的方法,而里面具体的调用过程是不知道的。
我们用图来显示,在客户端看到的情况是:
而实际的调用情况是:
关于回调函数还不理解的,我推荐篇文章:
《回调函数详解》