一、步骤
public class JkdProxyDynamic implements InvocationHandler { private RealSubject realSubject; public JkdProxyDynamic(RealSubject realSubject) { this.realSubject = realSubject; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object reslut = null; try { method.invoke(realSubject, args); } catch (Exception e) { throw e; } return reslut; } }
public class RealSubject implements Subject { @Override public void request() { System.out.println("real subject excute request" ); } @Override public void hello() { System.out.println("real subject excute hello" ); } }
public class Client { public static void main(String[] args) { /** * loader: 类加载器 * interface:实现接口 * invocationhandler: */ Subject subject = (Subject) Proxy.newProxyInstance(Client.class.getClassLoader(), new Class[]{Subject.class}, new JkdProxyDynamic(new RealSubject())); subject.hello(); } }
注意:jdk的代理只能对实现了接口的类进行代理。
ps:第一次写博客,记录一下自己的学习,参考自慕课网@David 和@apollo_0001 的视频,感谢!