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();
        }

    输出:

     

  • 相关阅读:
    课后作业 学号15100457
    开学第一课
    20180320作业2:进行代码复审训练
    20180320作业1:源代码管理工具调查
    软工作业PSP与单元测试训练
    构建之法 完成教材第一章P18第4题
    第一天上课 创建博客
    进行代码复审训练
    源代码管理工具调查
    软工作业PSP与单元测试训练
  • 原文地址:https://www.cnblogs.com/bulrush/p/12704011.html
Copyright © 2011-2022 走看看