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.
  • 相关阅读:
    SQL Server 全文搜索 配置、查询初体验
    SQL Server 触发器
    SQL Server 锁
    SQL Server 事务语法
    SQL Server 表变量和临时表的区别
    SQL Server系统存储过程
    SQL 语句转换格式函数Cast、Convert
    SQL Server 系统视图
    T-SQL 批处理
    SQL Server 分区表
  • 原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/8604400.html
Copyright © 2011-2022 走看看