package pac.testin;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
interface Subject {
void request();
}
class RealSubject implements Subject {
public void request() {
System.out.println("Here RealSubject go!!");
}
}
class userSide implements InvocationHandler {
Subject subject = null;
public userSide(Subject subject) {
this.subject = subject;
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("Get warm up!!");
method.invoke(subject, args);
System.out.println("Just relax!!");
return null;
}
public static void main(String[] args) {
Subject subject = new RealSubject();
InvocationHandler handler = new userSide(subject);
Subject proxy = (Subject) Proxy.newProxyInstance(subject.getClass()
.getClassLoader(), subject.getClass().getInterfaces(), handler);
proxy.request();
}
}