//抽象主题接口类 public interface AbstractSubject{ public void request(); } //真实主题类A public class RealSubjectA implements AbstractSubject{ public void request(){ System.out.println(" RealSubjectA !"); } } //真实主题类B public class RealSubjectB implements AbstractSubject{ public void request(){ System.out.println(" RealSubjectB !"); } } //动态代理类 import java.lang.reflect.*; public class DynamicProxy implements InvocationHandler{ private Object obj; public DynamicProxy(){} public DynamicProxy(Object obj){ this.obj=obj; } public Object invoke(Object proxy,Method method,Object[] args) throws Throwable{ preRequest(); method.invoke(obj,args); postRequest(); return null; } public void preRequest(){ System.out.println(" before Request!"); } public void postRequest(){ System.out.println(" after Request!"); } } //客户端测试类 import java.lang.reflect.*; public class Client1{ public static void main(String[] args) { InvocationHandler handler =null; AbstractSubject subject = null; handler = new DynamicProxy(new RealSubjectA()); subject = (AbstractSubject)Proxy.newProxyInstance(AbstractSubject.class.getClassLoader(),new Class[]{AbstractSubject.class},handler); subject.request(); System.out.println(" ------------------ !"); handler = new DynamicProxy(new RealSubjectB()); subject = (AbstractSubject)Proxy.newProxyInstance(AbstractSubject.class.getClassLoader(),new Class[]{AbstractSubject.class},handler); subject.request(); } } 结果: before Request! RealSubjectA ! after Request! ------------------ ! before Request! RealSubjectB ! after Request! 新手疑惑:subject是啥?subject.request()后的调用过程是什么?