
动态代理相对于静态代理,代理类无需因为委托类儿变更,下面为动态代理的代理类。
动态代理也分为3部分:接口类、委托类(实现类)、代理类。
public class DynamicProxy implements InvocationHandler {
private Object realObject;
public Object getProxy(Object realObject) {
this.realObject = realObject;
Object proxyObject = Proxy.newProxyInstance(
realObject.getClass().getClassLoader(),
realObject.getClass().getInterfaces(),
this
);
return proxyObject;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
long start = System.currentTimeMillis();
Object result = method.invoke(realObject, args);
System.out.println("耗时:" + (System.currentTimeMillis() - start));
return result;
}
public static void main(String[] args){
IWater water = new River();
IWater result = (IWater) new DynamicProxy().getProxy(water);
result.flow();
}
}




近期评论