动态代理的java实现

来源:互联网 发布:无线路由器mac绑定 编辑:程序博客网 时间:2024/06/07 19:02

所谓代理模式中的代理,

其实非常类似于生活中的房产中介,经纪人,代理商的角色


而在实际应用中,动态代理用的比较多,

下文使用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)的核心和关键技术。




原创粉丝点击