Java基础---Proxy 代理
来源:互联网 发布:js url encode utf8 编辑:程序博客网 时间:2024/06/06 03:36
定义:
JDK1.3增加的属性,利用代理可以在运行时创建一个实现了一组给定接口的新类。这种功能只能在编译时无法确定需要实现那个接口时才有必要使用。
1.什么是动态代理?
答:动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实。代理一般会实现它所表示的实际对象的接口。代理可以访问实际对象,但是延迟实现实际对象的部分功能,实际对象实现系统的实际功能,代理对象对客户隐藏了实际对象。客户不知道它是与代理打交道还是与实际对象打交道。
2.为什么使用动态代理?
答:因为动态代理可以对请求进行任何处理
3.使用它有哪些好处?
答:因为动态代理可以对请求进行任何处理
4.哪些地方需要动态代理?
答:不允许直接访问某些类;对访问要做特殊处理等
package Proxy;/** * @author 作者 E-mail: * @version 创建时间:2015年7月18日 下午3:27:41 * 类说明 */public interface HelloWorld { public void sayHelloWorld();}
package Proxy;/** * @author 作者 E-mail: * @version 创建时间:2015年7月18日 下午3:28:23 * 类说明 */public class HelloWorldImpl implements HelloWorld{ public void sayHelloWorld() { System.out.println("HelloWorld!"); }}
package Proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;/*** 实现在方法调用前后向控制台输出两句字符串**/public class HelloWorldHandler implements InvocationHandler{ //要代理的原始对象 private Object obj; public HelloWorldHandler(Object obj) { super(); this.obj = obj; } /** * 在代理实例上处理方法调用并返回结果 * * @param proxy 代理类 * @param method 被代理的方法 * @param args 该方法的参数数组 */ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result = null; //调用之前 doBefore(); //调用原始对象的方法 result=method.invoke(obj, args); //调用之后 doAfter(); return result; } private void doBefore(){ System.out.println("before method invoke"); } private void doAfter(){ System.out.println("after method invoke"); } }
package Proxy;/** * @author 作者 E-mail: * @version 创建时间:2015年7月18日 下午3:31:08 * 类说明 */import java.lang.reflect.InvocationHandler;import java.lang.reflect.Proxy;public class HelloWorldTest { public static void main(String[] args) { HelloWorld helloWorld=new HelloWorldImpl(); InvocationHandler handler=new HelloWorldHandler(helloWorld); //创建动态代理对象 HelloWorld proxy=(HelloWorld)Proxy.newProxyInstance( helloWorld.getClass().getClassLoader(), helloWorld.getClass().getInterfaces(), handler); proxy.sayHelloWorld(); }}
0 0
- 【Java基础】代理 - Proxy
- Java基础---Proxy 代理
- java基础进阶-------代理(Proxy)
- Java基础之代理Proxy
- java基础总结32-代理(Proxy)
- java Proxy代理&cglib代理
- Java基础加强总结(三)——代理(Proxy)
- Java基础加强总结(三)——代理(Proxy)
- Java基础加强总结——代理(Proxy)
- Java基础加强总结——代理(Proxy)
- Java基础加强总结(三)——代理(Proxy)
- Java基础加强总结之动态代理(Proxy)
- Java基础学习总结——动态代理技术(Proxy)
- java 代理(proxy)模式
- Java Proxy动态代理
- java Proxy 代理模式
- JAVA实现代理proxy
- Java 动态代理 Proxy
- NYOJ264 国王的魔镜
- VC++ 控件赋值取值
- 计蒜客第一场A
- Codeforces Round #240 (Div. 2) (ABCDE题解)
- Android中JNI的使用方法
- Java基础---Proxy 代理
- iptables 防火墙笔记 2
- boost中类型转换学习
- No result defined for action XXX and result input
- 属性 & 便利构造器
- bat批处理修改cmd窗口大小、标题、字体、背景颜色
- 计蒜客 第一场 搜狗输入法
- 计蒜之道 初赛 第一场 搜狗输入法的分词算法
- tp实现贴脸灭屏