public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)
public interface InvocationHandler { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable; }
//抽象主题 interface AbstractSubject { void request(); } //真实主题 class RealSubject implements AbstractSubject { public void request() { System.out.println("访问真实主题方法..."); } } //真实主题 class RealSubject1 implements AbstractSubject { public void request() { System.out.println("访问真实主题方法1..."); } } //动态代理类 class DynamicProxy implements InvocationHandler { private Object object; public DynamicProxy(Object object) { this.object = object; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { before(); Object result = method.invoke(object, args); after(); return result; } private void before() { System.out.println("hello!"); } private void after() { System.out.println("bye!"); } } //测试类 public class TestDynamicProxyPattern { public static void main(String[] args) { AbstractSubject abstractSubject = new RealSubject(); DynamicProxy dynamicProxy = new DynamicProxy(abstractSubject); Proxy.newProxyInstance(abstractSubject.getClass().getClassLoader(), abstractSubject.getClass().getInterfaces() , dynamicProxy); abstractProxy.request(); } }
AbstractSubject abstractSubject1 = new RealSubject1(); DynamicProxy dynamicProxy = new DynamicProxy(abstractSubject1);
原文:https://www.cnblogs.com/liujiarui/p/12408732.html