所谓代理模式中的代理,
其实非常类似于生活中的房产中介,经纪人,代理商的角色
而在实际应用中,动态代理用的比较多,
下文使用java reflect 下面的两个类做动态代理的简单实现。
先定义接口
public interface IConsumer { public void doPurchase(); public void doSaleReturn(); }
一个实现该接口的类
public class Consumer implements IConsumer { @Override public void doPurchase() { System.out.println("consumerBuy"); } @Override public void doSaleReturn() { System.out.println("consumerSalesReturn"); } }
main方法
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy;
public static void main(String args[]){ final Consumer user = new Consumer(); InvocationHandler handler = new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { //这里可以做各种判断 System.out.println("doSomeThing"); Object result = method.invoke(user); return result; } }; IConsumer proxyUser = (IConsumer)Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), user.getClass().getInterfaces(), handler); proxyUser.doPurchase(); proxyUser.doSaleReturn(); } }本文介绍的代理是后面文章将讲到的AOP(面向切面编程)(Aspect Oriented Programming)的核心和关键技术。