美文网首页
java jdk动态代理技术

java jdk动态代理技术

作者: LX_代码制造坊 | 来源:发表于2021-01-15 11:01 被阅读0次

    JDK动态代理必须实现接口,通过反射来动态代理方法,缺点是消耗系统性能。但是无需产生过多的代理类,避免了重复代码的产生,系统更加灵活。可以看到JDK动态代理比静态代理更加灵活。

    public class JDKTest {
        public static void main(String[] args) {
            Factory factory = new Factory();
            InvocationHandler invocationHandler = new Taobao(factory);
            Usb o = (Usb) Proxy.newProxyInstance(factory.getClass().getClassLoader(),
                    factory.getClass().getInterfaces(), invocationHandler);
            int sell = o.sell();
            System.out.println(sell);
        }
    }
    
    //目标接口
    interface Usb {
        int sell();
    }
    
    //目标类
    class Factory implements Usb {
    
        @Override
        public int sell() {
            return 10;
        }
    
    }
    
    //动态代理类
    class Taobao implements InvocationHandler {
        private Object target;
    
        public Taobao() {
        }
    
        public Taobao(Object target) {
            this.target = target;
        }
    
        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            Object ret = method.invoke(target, args);
            int price = (int) ret;
            return price + 10;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:java jdk动态代理技术

          本文链接:https://www.haomeiwen.com/subject/yadfhktx.html