zoukankan      html  css  js  c++  java
  • JDK动态代理理解精髓

     
    1.Java动态代理的关键是:Proxy类要和InvocationHandler的接口实现类,要用同一个目标target对象class,所以精髓是InvocationHandler和Proxy是一一绑定的,是配对的。
    2.所以精髓是InvocationHandler和Proxy是一一绑定的,是配对的。
    3.所以精髓是InvocationHandler和Proxy是一一绑定的,是配对的。
    4.所以精髓是InvocationHandler和Proxy是一一绑定的,是配对的。
     
    5.再创建动态代理,针对不同的target对象拦截,只需要保证proxy和invocation的参数是成对的,是匹配的,同一个即可。那么这套Proxy和Invocation就可以复用。
     
    5 代理类:程序执行时真正执行的是代理类,代理类是实现了拦截器的流程的类。
    package com.lanvis.reflect;
    import java.lang.reflect.Proxy;
    public class MyProxy {
        public Object getProxy(Object object) {
            MyHandler myHandler = new MyHandler();
            myHandler.setObject(object);
            return Proxy.newProxyInstance(object.getClass().getClassLoader(),
                    object.getClass().getInterfaces(), myHandler);
        }
    }
    6 测试类:用来测试拦截器成功与否。
    package com.lanvis.reflect;
    public class Test {
        public static void main(String[] args){
            ITarget target=new Target();
            MyProxy myProxy=new MyProxy();
            ITarget proxy=(ITarget)myProxy.getProxy(target);
            proxy.doSthing();
            proxy.doOthing();
        }
    }
  • 相关阅读:
    扁鹊见蔡桓公
    月出
    TypeScript 基本类型
    随机漂浮图片广告实例代码
    js实现的随机颜色实例代码
    初识JavaScript 变量, 操作符, 数组
    HTML5的新结构标签
    14款超时尚的HTML5时钟动画
    CSS如何设置div半透明效果
    Google Doodle 2015圣诞版背后的故事与十年圣诞回顾
  • 原文地址:https://www.cnblogs.com/panxuejun/p/7753844.html
Copyright © 2011-2022 走看看