Moveable 是接口 Tank是其实现类
TimeHandler是<span style="font-family: Arial, Helvetica, sans-serif;">InvocationHandler的实现类</span>
以下是java代码:
public class MyClient {
public static void main(String[] args) throws Exception {
// Class clazzProxy1 = Proxy.getProxyClass(Moveable.class.getClassLoader(), Moveable.class);
class TimeHandler implements InvocationHandler{
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Moveable t = new Tank();
// TODO Auto-generated method stub
return method.invoke(t, args);
}
}
InvocationHandler h = new TimeHandler();
Moveable m = (Moveable)Proxy.newProxyInstance(Moveable.class.getClassLoader(), Tank.class.getInterfaces(), h);
m.move();
}
}
使用Java动态代理机制的好处:
1、减少编程的工作量:假如需要实现多种代理处理逻辑,只要写多个代理处理器就可以了,无需每种方式都写一个代理类。
2、系统扩展性和维护性增强,程序修改起来也方便多了(一般只要改代理处理器类就行了)。