代理:
代理公司:比如员工员工出差,中间买机票,订酒店 把中间的无关事情交给代理公司去办
Java
代理
直接调用方法运行
把方法告诉代理对象,让代理对象帮我执行
比如我每次在进行数据更新的时候要记录日志,记录日志的过程交给代理去做
JDK代理
public class MyProxy implements InvocationHandler {
private Object obj;//需要代理的对象
public MyProxy(Object obj) {
this.obj = obj;
}
public Object getObj() {
return obj;
}
public void setObj(Object obj) {
this.obj = obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
long start =System.currentTimeMillis();
//反射调用方法
Object invoke = method.invoke(obj, args);
long end=System.currentTimeMillis();
System.out.println("用时"+(end-start));
return invoke;
}
}
@Test
public void test1(){
//需要被代理的对象
CardDao dao=new CardDaoImpl1();
//交给代理类
MyProxy proxy=new MyProxy(dao);
//让代理公司代为执行
CardDao d = (CardDao) Proxy.newProxyInstance(dao.getClass().getClassLoader(), dao.getClass().getInterfaces(), proxy);
d.update();
}