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

    jdk动态代理例子

    1. 声明接口

    package cn.zhengyong.proxy;
    
    /**
     * 接口
     * @author zhengyong
     *
     */
    public interface OriginInterface {
    
        public void testProxy();
    
    }

    2. 实现接口

    package cn.zhengyong.proxy;
    
    /**
     * 实现类
     * @author zhengyong
     *
     */
    public class OriginImpl implements OriginInterface{
    
        @Override
        public void testProxy() {
            System.out.println("test finish.");
        }
    }

    3. 创建代理类,需要持有接口对象

    package cn.zhengyong.proxy;
    
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    
    /**
     * 
     * 代理类实现InvocationHandler
     * 
     * @author zhengyong
     *
     */
    public class OriginProxy implements InvocationHandler{
    
        private Object target;
    
        public  OriginProxy(OriginInterface target){
            super();
            this.target = target;
        }
    
        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    
            System.out.println("begin invoke method.");
    
            Object result = method.invoke(target, args);
    
            System.out.println("end invoke method.");
    
            return result;
        }
    }

    4. 创建测试类

    package cn.zhengyong.proxy;
    
    import java.lang.reflect.Proxy;
    
    /**
     * @author zhengyong
     *
     */
    public class ProxyTest {
    
        public static void main(String[] args) {
            // 实例化目标对象
            OriginInterface target = new OriginImpl();
            // 根据目标对象创建代理对象
            OriginInterface proxy = (OriginInterface) Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new OriginProxy(target));
            // 调用代理对象方法
            proxy.testProxy();
        }
    
    }

    5. 运行结果

    begin invoke method.
    test finish.
    end invoke method.
  • 相关阅读:
    48. Rotate Image
    83. Remove Duplicates from Sorted List
    46. Permutations
    HTML5笔记
    18. 4Sum
    24. Swap Nodes in Pairs
    42. Trapping Rain Water
    Python modf() 函数
    Python min() 函数
    Python max() 函数
  • 原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/8604400.html
Copyright © 2011-2022 走看看