package dongtaidaiLi;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class ProxyTest {
public static void main(String[]args){
MyInvocatioHandler ic = new MyInvocatioHandler(new UserServiceImpl() );
Service sve = (Service) ic.getProxy();
sve.add2();
}
}
interface Service {
//目标方法
public abstract void add2();
}
class UserServiceImpl implements Service {
public void add2() {
System.out.println("This is add service");
}
}
class MyInvocatioHandler implements InvocationHandler {
private Object target;
public MyInvocatioHandler(Object target) {
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("-----before-----");
Object result = method.invoke(target, args);
System.out.println("-----end-----");
return result;
}
// 生成代理对象
public Object getProxy() {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Class<?>[] interfaces = target.getClass().getInterfaces();
return Proxy.newProxyInstance(loader, interfaces, this);
}
}
class UserServiceImpl1 implements Service {
public void add2() {
System.out.println("another UserServiceImpl1e");
}
}