标签:
package com.hk.ztry; public interface Subject { abstract public void request(); }
package com.hk.ztry; public class RealSubject implements Subject { @Override public void request() { System.out.println("这里是RealSubject类."); } }
package com.hk.ztry; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; public class DynamicSubject implements InvocationHandler { private Object my_subject; public DynamicSubject(Object curr_subject) { this.my_subject=curr_subject; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { //my_subject实际的被代理对象 //args为执行被代理对象相应操作所需的参数 method.invoke(my_subject, args); return null; } }
package com.hk.ztry; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; public class ProxyDynamicTest { //直到此刻,我才明白,动态代理这个设计模式,到底是个什么鬼。OK //就是让subject这个接口,来代理具体类的行为,反正这些method,接口都有的。 public static void main(String[] args) { RealSubject real_subject = new RealSubject(); InvocationHandler invocationHandler = new DynamicSubject(real_subject); Class realobj_class = real_subject.getClass(); Subject subject = (Subject)Proxy.newProxyInstance( realobj_class.getClassLoader(), realobj_class.getInterfaces(), invocationHandler); //由subject为real_subject执行代理 subject.request(); } }
标签:
原文地址:http://www.cnblogs.com/aniy/p/4724399.html