一、Java静态代理:
代理对象和 目标对象实现了相同的接口,目标对象作为代理对象的一个属性,具体接口实现中,代理对象可以在 调用目标对象相应方法 前后加上其他业务处理逻辑。
我们写一个代理类,在代理类里面有 一个被代理的类,他是代理对象的私有变量,调用具体代理对象的方法的时候,
内部的实现是真实的类的方法的实现。可以再写上pre post之类的执行前后的其他逻辑
缺点:一个代理类只能代理一个业务类。如果业务类增加方法时,相应的代理类也要增加方法。
Java动态代理:
Dynamic Proxy:Proxy类即为动态代理类,他的一个方法newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h):返回代理类的一个实例,
返回后的 代理类可以当作 真实类使用。
所谓Dynamic Proxy,它是在运行时生成的class,在生成它时你必须提供一组interface给它,然后该class就宣称它实现了这些interface。
这个Dynamic Proxy其实就是一个Proxy,它不会替你作实质性的工作,
在生成它的实例时你必须提供一个handler,由它接管实际的工作。
写一个类 实现InvocationHandler接口,重写Invoke方法,在Invoke方法里面 可以进行 增强处理的逻辑的编写,这个公共代理类 在运行的时候才能明确自己要代理的对象,
同时 可以实现 真实类的方法,然后在 实现类方法的时候 可以进行增强处理。
实际上:代理对象的方法 = 增强处理 + 被代理对象的方法
声音简介
用户评论
表情0/300
音频列表
- 2018-09
- 2018-09
- 2018-09
- 2018-09
- 2018-09
- 2018-09
- 2018-08
- 2018-08
- 2018-08
- 2018-08
查看更多
叫我白先生好了
有点难这个晕菜
摔了不痛 回复 @叫我白先生好了:
再看看网上的博客,自己最好写个,就清晰了