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

    1:利用反射机制在运行时创建代理类

    package com.wing.mall.base.proxy;
    
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
    
    /**
     * <p>
     *     利用反射机制在运行时创建代理类
     * </p>
     *
     * @author: heluwei
     * @Date: 2020/4/15 10:51
     */
    public class ProxyHandler implements InvocationHandler {
        private Object object;
        public ProxyHandler(Object object){
            this.object = object;
        }
        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            System.out.println("Before invoke "  + method.getName());
            method.invoke(object, args);
            System.out.println("After invoke " + method.getName());
            return null;
        }
    
    }

    2:创建目标类

    package com.wing.mall.base.proxy;
    
    public interface ByeInterface {
        void sayBye();
    }
    package com.wing.mall.base.proxy;
    
    /**
     * <p></p>
     *
     * @author: heluwei
     * @Date: 2020/4/15 10:53
     */
    public class Bye implements ByeInterface {
        @Override
        public void sayBye() {
            System.out.println("Bye 张三!");
        }
    }

    使用:

    public static void main(String[] args) {
            Bye bye = new Bye();
            InvocationHandler  proxyHandler = new ProxyHandler(bye);
            ByeInterface byeProxy = (ByeInterface)Proxy.newProxyInstance(bye.getClass().getClassLoader(), bye.getClass().getInterfaces(), proxyHandler);
            byeProxy.sayBye();
        }

    输出:

     

  • 相关阅读:
    计算机概念-shell
    数组去重复的三种方法
    CSS 自定义字体
    解决 IE 6/7 中console对象兼容性问题
    Sublime Text 3 Install Markdown Preview Plugins
    对象数组排序函数
    Ubuntu 16.04 下使用Xampp
    JavaScript 中 申明变量的方式--let 语句
    bootstrap框架 导航条组件使用
    phpstorm version 2016.2 License Server激活
  • 原文地址:https://www.cnblogs.com/bulrush/p/12704011.html
Copyright © 2011-2022 走看看