zoukankan      html  css  js  c++  java
  • 动态代理 例子

    package xinhuiji_day09

    **********************************定义代理类**********************************************
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
    //动态代理
    public class MyInvocationHandler implements InvocationHandler {
        private Object obj = null;            //真实主题
        public Object Bind(Object obj){   //绑定真是操作主题
            this.obj = obj;
            return Proxy.newProxyInstance(obj.getClass().getClassLoader(),
                    obj.getClass().getInterfaces(), this);    //取得代理对象
        }
        @Override
        public Object invoke(Object arg0, Method arg1, Object[] arg2)
                throws Throwable {               //动态调用方法
            Object temp = arg1.invoke(this.obj, arg2);        //调用方法,传入真实主题和参数
            return temp;                  //返回方法的返回信息
        }
    }
    /*
        在MyInvocationHandler类的Bind方法中接受被代理的对象的真是主题实现,之后覆写InvocationHandler接口的invoke方法
        完成具体的方法调用
     * */

    ********************************定义接口**************************************

    package xinhuiji_day09;

    public interface Subject {
        String say(String name,int age);

    }
    ******************************定义真实主题实现类************************************

    package xinhuiji_day09;

    public class RealSubject implements Subject{

        @Override
        public String say(String name, int age) {
            return "姓名: "+name+" 年龄: "+age;
        }
    }
    ***********************测试*********************************

    package xinhuiji_day09;

    public class Test {

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            MyInvocationHandler my = new MyInvocationHandler();

            Subject sub = (Subject) my.Bind(new RealSubject());

            String info = sub.say("han", 23);
            System.out.println(info);

        }

    }

  • 相关阅读:
    高精度
    欢迎来到我的博客!
    1
    POJ 2774 求两个串的最长公共前缀 | 后缀数组
    ural1297 求最长回文子串 | 后缀数组
    洛谷 [SCOI2010]股票交易 | 单调性DP
    BZOJ 1096: [ZJOI2007]仓库建设 | 斜率优化DP
    洛谷 P2906 [USACO08OPEN]牛的街区Cow Neighborhoods | Set+并查集
    BZOJ 1010: [HNOI2008]玩具装箱toy | 单调队列优化DP
    BZOJ 1342: [Baltic2007]Sound静音问题 | 单调队列维护的好题
  • 原文地址:https://www.cnblogs.com/siashan/p/3859863.html
Copyright © 2011-2022 走看看