zoukankan      html  css  js  c++  java
  • 代理模式(Proxy)

      在编写代码的时候使用这种设计模式可以实现在不对源类修改的情况下,并可以隐式的调用对象。

      这里简单介绍两种代理模式:静态代理和动态代理。

      一 静态代理

      举个例子,比如有一个Class People,该类有一个方法是唱歌sing(),代码如下:

      接口People:

      

      实现类PeopleImpl:

      

      但是此时有一个需求,需要在唱歌之前鞠躬,唱歌之后退场。在不修改PeopleSimple源代码逻辑的情况下,可以使用静态代理新增一个代理实现类来增加新的功能,例如:

      

      此时执行main方法的运行结果是:

      

       实现了新增的功能。

      二 静态代理是在编译之前就写好的代理类代理代码,这种方式的缺点就是要是如果许多方法之前之后都需要使用相同的操作时,需要写重复的代码并且需要修改多个静态代理类,为了解决这种问题,JDK在底层的

      1.实现InvacationHandler的MyInvocationHandler类:

      

      2.新建一个动态代理类:

      

      3.People接口新增dance方法,PeopleImpl对其进行了实现:

      

      

      4.测试类及结果:

      

      

  • 相关阅读:
    android 6.0 以上在doze模式精确定时
    MySQL 性能优化神器 Explain 使用分析
    android java层通过jni加载使用第三方的so库
    android 抓取native层奔溃
    mybatis面试入门
    Python实现异步 io多种方式
    可用率map处理
    雷哥带你走进Javascript
    前端存储技术
    听雷哥浅谈Redis
  • 原文地址:https://www.cnblogs.com/yust/p/10822875.html
Copyright © 2011-2022 走看看