动态代理模式
来源:互联网 发布:java调用http上传文件 编辑:程序博客网 时间:2024/06/05 09:35
动态代理模式的角色:
--抽象角色:是真实对象和代理对象的公共接口
--代理角色:对真实对象进行封装,可以操作真实对象
--真实角色:依赖代理角色,代理真正操纵的类
抽象角色:
subject.java
package com.wansha.proxy;public interface Subject {public void request();}
真实角色:
Subject1.java
package com.wansha.proxy;public class Subject1 implements Subject {@Overridepublic void request() {System.out.println("Subject1");}}
Subject2.java
package com.wansha.proxy;public class Subject2 implements Subject {@Overridepublic void request() {System.out.println("Subject2");}}
生成代理角色的实现类
ProxySubject.java
package com.wansha.proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class ProxySubject implements InvocationHandler {private Object obj;public ProxySubject(Object obj){this.obj = obj;}public ProxySubject(){}@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {System.out.println("代理方法执行之前");method.invoke(obj,args);System.out.println("代理方法执行之后");return null;}public void setObj(Object obj) {this.obj = obj;}public Object getfactory()throws Exception{if(obj == null){throw new Exception("没有目标对象");}return Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(),new ProxySubject(obj));//生成代理角色}}
客户端:
Client.java
package com.wansha.proxy;import java.lang.reflect.Proxy;public class Client {public static void main(String[] args) throws Exception{realSubject real = new realSubject();Subject1 real1 = new Subject1();Subject2 real2 = new Subject2();ProxySubject proSub= new ProxySubject();proSub.setObj(real);Subject sub = (Subject)proSub.getfactory();sub.request();}}
- 代理模式--动态代理
- 代理模式 & 动态代理
- 代理模式--动态代理
- 代理模式(动态代理)
- 代理模式-动态代理
- 代理模式-动态代理
- 代理模式动态代理
- 代理模式-动态代理
- 代理模式 -动态代理
- 代理模式---动态代理
- 代理模式-动态代理
- 代理模式之动态代理
- java代理模式--动态代理
- 代理模式之动态代理
- 代理模式之动态代理
- 代理模式之动态代理
- 代理模式和动态代理
- 代理模式与动态代理
- 女子做手术拉直S形脊椎身高骤增9厘米
- 应用 memcached 提升站点性能
- 编程题--Mystring类的编写
- Apache Commons fileUpload实现文件上传
- Box2d实现爆炸效果
- 动态代理模式
- linux iptables
- hibernate 数据库锁
- 中日关联迷局(四):日本的厌华情感跟台湾情结
- Myeclipse无法启动tomcat服务器TRANSPORT_INIT(510),而且cmd命令窗口也一闪而过~·
- MySQL数据库乱码问题总结
- ARM乘法指令与乘加指令
- 今天学得有点多——end用法
- 使用JDBC插入大量数据的性能测试