Java静态代理、动态代理实例采用Java代理模式,代理类通过调用委托类对象的方法,来提供特定的服务。委托类需
Java静态代理、动态代理实例
采用Java代理模式,代理类通过调用委托类对象的方法,来提供特定的服务。委托类需要实现一个业务接口,代理类返回委托类的实例接口对象。
按照代理类的创建时期,可以分为:静态代理和动态代理。
所谓静态代理: 指程序员创建好代理类,编译时直接生成代理类的字节码文件。
所谓动态代理: 在程序运行时,通过反射机制动态生成代理类。
?
一、静态代理类实例:
1、Serivce.java
?
5 楼 Link028 2012-06-27 探讨下:
动态代理实现
ServiceImpl target = new ServiceImpl();
//创建动态代理类
ServiceProxy proxy = new ServiceProxy(target);
Service service = (Service) proxy.getProxyInstance();
新建 代理类对象 ServiceProxy proxy 时已经将委托对象传递进来了,
然后 调用 Service service = (Service) proxy.getProxyInstance();得到接口是不是
多此一举了?感觉直接用 target 不就OK了吗? 6 楼 xlaohe1 2012-06-27 我看见了IBM 7 楼 w156445045 2012-06-27 感觉没怎么说清楚, 8 楼 暗夜幽魂 2012-06-27 Link028 写道探讨下:
动态代理实现
ServiceImpl target = new ServiceImpl();
//创建动态代理类
ServiceProxy proxy = new ServiceProxy(target);
Service service = (Service) proxy.getProxyInstance();
新建 代理类对象 ServiceProxy proxy 时已经将委托对象传递进来了,
然后 调用 Service service = (Service) proxy.getProxyInstance();得到接口是不是
多此一举了?感觉直接用 target 不就OK了吗?
用动态代理往往是要实现一些诸如:日志,权限等功能的插入。直接调用target就没办法实现这些额外功能。 例如本文中的权限控制。建议可以看一下spring中的AOP原理 就会明白了。 9 楼 JamesQian 2012-07-02 通过dynamic proxy 可以实现对其权限动态的处理,不错 10 楼 Link028 2012-07-16 是我没表达清楚?还是你没看清楚?
答非所问。