动态代理

来源:互联网 发布:幼儿讲故事软件下载 编辑:程序博客网 时间:2024/06/14 11:44
<span style="font-size:14px;"><span style="color:brown;"><span style="font-family:SimSun;color:#000000;">动态代理:可以提供对另一个对象的访问,同时隐藏实际对象的具体事实。代理一般会实现它所表示的实际对象的接口。代理可以访问实际对象,但是延迟实现实际对象的部分功能,实际对象实现系统的实际功能,代理对象对客户隐藏了实际对象。客户不知道它是与代理打交道还是与实际对象打交道。</span></span>package com.yfly.proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import java.text.SimpleDateFormat;import java.util.Date;/** * 动态代理 * @author yFly * */public class UserProxy implements InvocationHandler {//被代理对象private Object pargetObject;public Object createProxyObject(Object pargetObject) {this.pargetObject = pargetObject;return Proxy.newProxyInstance(pargetObject.getClass().getClassLoader(),pargetObject.getClass().getInterfaces(), this);}public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {log();Object rel = method.invoke(pargetObject, args);log();return rel;}public void log() {System.err.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));}}</span>

0 0