什么是代理?
应用设计模式定义,代理是对其他对象提供一种代理以控制对这个对象的访问。
反映到动态代理中,”控制对这个对象的访问“貌似是通过invokeHandler来实现的。
java动态代理是在java反射的基础上封装了一层。
public void invokeMethod(Interface[] interfaces)
{
for(Interface interface :interfaces)
{
String interfaceName = interface.getName();
Class objeClass = Class.forName(interfaceName);
Method[] mehods = objeClass.getMethods();
for (Method method : methods)
{
invoke(proxy, method, args);
}
}
public abstract void invoke(object proxy, Method method, object[] args);
对于多个接口,动态代理内部实现上实际上是将所有的接口拼接为一个接口。而定义InvocationHandler 接口带来的益处是方便的实现AOP。
当我们调用proxy.methodimpl(object args)的时候,代理类将methodimpl和args作为参数传递给了invokeMethod方法,从而实现了动态代理。
}