当invaction handler 被调用的时候,代理机制(proxying)开始工作。
DynamicProxyDemo.java
package com.enfo.wd.patterns;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
interface Foo{
void f(String s);
void g(int i);
String h(int i,String s);
}
public class DynamicProxyDemo {
public static void main(String[] args){
Foo prox=(Foo) Proxy.newProxyInstance(
Foo.class.getClassLoader(),
new Class[]{Foo.class},
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args){
System.out.println("InvocationHandler called:"+"\n\tMethod="+method);
if(args!=null){
System.out.println("\targe =");
for(int i=0;i<args.length;i++){
System.out.println("\t\t"+args[i]);
}
}
return null;
}
});
prox.f("hello");
prox.g(49);
prox.h(47, "hello");
}
}