黑马程序员技术交流社区
标题:
代理模式的一些总结
[打印本页]
作者:
刘雷冲
时间:
2012-3-10 18:48
标题:
代理模式的一些总结
本帖最后由 刘雷冲 于 2012-3-10 18:58 编辑
代理模式是对象的结构型模式,代理模式给某一个对象提供了一个代理对象,
并由代理对象控制对原对象的引用
代理分类:
1、静态代理
1>需要建立大量的代理类
2>重复的代码会出现在各个角落(违背的原则:重复代码最好不要出现多次)
2、动态代理
JDK动态代理只能实现了接口的类进行代理,采用了JDK动态代理必须实现
InvocationHander接口,采用Proxy类创建相应的代理类,参见LogHander.java
采用JDK动态代理可以对目录类(UserManagerImp)方法进行增强
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class LogHander implements InvocationHandler {
private Object object;
public Object newProxyInstance(Object object) {
this.object = object;
return Proxy.newProxyInstance(object.getClass().getClassLoader(),
object.getClass().getInterfaces(), this );
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("start------------>>>>>>");
Object obj = null;
try {
obj = method.invoke(object, args);
System.out.println("chenggong");
} catch(Exception e) {
e.printStackTrace();
}
/*try {
System.out.println("name=----" + method.getName());
for(int i=0; i<args.length; i++) {
System.out.println("参数 " + args[i]);
System.out.println("大幅度");
}
} catch(Exception e) {
e.printStackTrace();
System.out.println("error---------");
}*/
return obj;
}
}
复制代码
Proxy.zip
(1.97 KB, 下载次数: 73)
2012-3-10 18:56 上传
点击文件名下载附件
此为动态代理的测试描述
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2