package dyn;
public interface RealService {
void buy();
}
===================
package dyn;
public class RealServiceImpl implements RealService {
@Override
public void buy() {
//do real service ,such as crud
System.out.println("buy big hourse... ....");
}
}
===================
package dyn;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class MyInvocationHandler implements InvocationHandler {
//realObject
private RealService target;
public MyInvocationHandler(RealService target) {
super();
this.target = target;
}
@Override
public Object invoke(Object arg0, Method method, Object[] obj)
throws Throwable {
System.out.println("make big money... ...");
Object o = method.invoke(target,obj);
System.out.println("kiss QQ");
return o;
}
public Object getRealServiceProxyObj() {
return Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), target.getClass().getInterfaces(), this);
}
}
===============================
package dyn;
public class TestDynProxy {
public static void main(String[] args) {
// reql obj
RealService real = new RealServiceImpl();
// trans 中间商
MyInvocationHandler invocationHandler = new MyInvocationHandler(real);
// proxy obj
RealService realServiceProxyObj = (RealService)invocationHandler.getRealServiceProxyObj();
realServiceProxyObj.buy();
}
}