zoukankan      html  css  js  c++  java
  • Java的设计模式之代理模式(动态代理)

    代理模式:代理对象代理真实对象,达到增强真实对象功能的目的

      静态代理:有一个类文件描述代理模式

      动态代理:在内存中形成代理类

    代理对象和真实对象实现相同的接口

    代理对象 = Proxy.newProxyInstance();

    使用代理对象调用方法

    增强方法

    增强参数列表

    增强返回值类型

    增强方法体执行逻辑

     

    参考案例:卖手机

    1.创建真实对象

      

    2.动态代理增强Moblie对象

    三个参数:

    类加载器  真实对象.getClass().getClassLoader()

    接口数组  真实对象.getClass().getInterfaces()

    处理器  new InvocationHandler()

    SaleComputer proxy_Moblie = (SaleComputer) Proxy.newProxyInstance(moblie.getClass().getClassLoader(), moblie.getClass().getInterfaces(), new InvocationHandler() {

    代理逻辑编写的方法:代理对象调用的所有方法都会触发该方法的执行

    三个参数:

    proxy  代理对象
    method  代理对象调用的方法,被封装后的对象
    args  代理对象调用的方法时,传递的实际参数

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

      1 增强参数 args[0]

    使用真实对象调用该方法

    Object obj = method.invoke(moblie, args);

    2 增强返回值

    return xxx;

    }

    方便记忆。。。。

  • 相关阅读:
    让DIV实现抖动效果!
    Linux下如果python2和python3同时存在使用pip3
    Eclipse 查找一个接口的具体实现
    linux下编译安装软件到指定目录
    NG机器学习-octave基本操作
    NG机器学习
    全注解方式构建SpringMVC项目
    Java多线程学习开发笔记
    RabbitMQ 学习开发笔记
    Redis 学习开发笔记
  • 原文地址:https://www.cnblogs.com/zxh06820/p/12466699.html
Copyright © 2011-2022 走看看