zoukankan      html  css  js  c++  java
  • 动态代理 Proxy InvocationHandler

    能够在核心业务方法前后做一些你所想做的辅助工作,如log日志,安全机制等等。

    import java.lang.reflect.*;

    public interface Business{public void do();}

    public class BusinessImp implements Business{public void do(){。。。}}

    public class MyInvocationHandler implements InvocationHandler{

      private Object target = null;

      public MyInvocationHandler(Object target){this.target = target;}

    @Override

      public Object invoke(Object proxy, Method method, Object[] args) throws Throwable{

        调用核心业务方法前操作

        Object result = method.invoke(target, args);

        调用核心业务方法后操作

        return result;//返回代理对象

      }

    }

    public class Test{

      BusinessImp busi = new BusinessImp();//被代理对象

      MyInvocationHandler handler = new MyInvocationHandler(busi);

      Business proxy = (Business)Proxy.newProxyInstance(busi.getClass().getClassLoader(), busi.getClass().getInterface(),handler);

      proxy.do();//调用do时会调用handler的invoke方法

    }

  • 相关阅读:
    XidianOJ 1099 A simple problem
    XidianOJ 1097 焊板子的xry111
    XidianOJ 1172 Hiking
    XidianOJ 1176 ship
    bzoj1912(树的直径)
    黑暗城堡(最短路径树)
    poj1639(k限制最小生成树)
    0-1分数规划
    tyvj1391(Kruskal)
    [Usaco2007 Nov]Cow Relays(矩阵乘法+floyd)
  • 原文地址:https://www.cnblogs.com/zawjdbb/p/7444550.html
Copyright © 2011-2022 走看看