Java的dynamic proxy(动态代理)的使用学习(三)
这篇的主题是用一个proxy代理多个classes。主要要做的是一个新的InvocationHandler
叫做MulticlassProxyHandler
:
可以看到这个handler的不同之处在于多包含了一个Bar
的接口和BarImpl
的实现。
然后这个handler里面有一个叫做delegates
的map,它负责保存foo
和bar
两个实际的objects。
然后看一下invoke()
方法当中的代码:
可以看到这个invoke()
方法会根据实际的传进来的method对应的class,来呼叫对应的delegates。
最后看一下main()
方法的实现:
可以看到我们用这个proxy
同时代理了foo
和bar
两个delegates。运行上面的代码得到结果如下:
以上就是用proxy来代理多个delegates的方法。
这篇文章的代码放在了这里:
有兴趣可以下载下来看看。