代理模式分为静态和动态代理

由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。

所以说静态代理,主要是自己写代理子类。比如:

有一个图书接口:

public interface Book{void read(String name);
}

一个图书实现类:

public class BookImpl implement Book{@Overridepublic void read(String name){System.out.printIn("阅读"+name);}
}

一个图书代理类:

public class BookProxy implement Book{private Book bookImpl;public BookProxy(Book bookImpl){this.bookImpl = bookImpl;}@Overridepublic void read(String name){//这里就可以做自己要做的事,比如代理方法之前做什么
      bookImpl.read(name);//代理方法之后做什么
  }
}

main方法测试

public class Main{public static void main(String[] args){Book bookImpl = new BookImpl();Book proxy = new BookProxy(bookImpl);proxy.read("aaa");   }
}    

静态代理类优缺点

  • 优点:
  1. 业务类只需要关注业务逻辑本身,保证了业务类的重用性。这是代理的共有优点。
  • 缺点:
  1. 代理对象的一个接口只服务于一种类型的对象,如果要代理的方法很多,势必要为每一种方法都进行代理,静态代理在程序规模稍大时就无法胜任了。
  2. 如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度。

转载于:https://www.cnblogs.com/LixiaoFeng1650062546/p/11474103.html

代理模式(Proxy) 静态相关推荐

  1. 二十三种设计模式(第十二种)-----代理模式(Proxy)

    二十三种设计模式(第十二种)-----代理模式(Proxy) 尚硅谷视频连接https://www.bilibili.com/video/BV1G4411c7N4?from=search&se ...

  2. 代理模式Proxy (非常容易看懂)

    代理模式有静态代理模式和动态代理模式 1.静态代理模式: 这个例子举得太好了:助理可以做其他事情:预定时间,场地,最后结算费用,但是唱歌的话只能由歌手华仔本人来  总共有三个类,调用类,代理类,被代理 ...

  3. [Java] 代理模式 Proxy Mode

    [Java] 代理模式 Proxy Mode 文章目录 [Java] 代理模式 Proxy Mode 1. 代理思想 2.java.lang.reflect.Proxy类 2.1 利用反射创建prox ...

  4. 代理模式之---静态代理

    代理模式之-静态代理 代理模式:为一个对象提供一个替身,以控制对这个对象的访问.即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 被代 ...

  5. 一文彻底搞懂代理模式(Proxy)

    代理模式 引言 代理模式的定义与特点 代理模式的结构 模式实现 静态代理 动态代理 总结 与装饰者模式 文章已收录我的仓库:Java学习笔记与免费书籍分享 代理模式 引言 代理模式是非常常见的模式,在 ...

  6. 【Java】代理模式(静态代理动态代理)

    CONTENT 代理模式 静态代理 动态代理 JDK 动态代理(基于接口) CGLIB 动态代理(基于类继承) JDK 动态代理 v.s. CGLIB 动态代理 JDK 动态代理为什么必须基于接口 R ...

  7. 23种设计模式7_代理模式之一静态代理

    23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧.许多其他的模式,如状态模式.策略模式.访问者模 ...

  8. 设计模式-代理模式(Proxy Pattern)

    设计模式-代理模式(Proxy Pattern) 文章目录 设计模式-代理模式(Proxy Pattern) 一.定义 二.概念解释 三.场景 四.实现 1.类图 2.代码实现 五.小结 六.动态代理 ...

  9. 设计模式-代理模式(静态代理、动态代理、cglib代理)

    文章目录 代理模式 静态代理 动态代理 cglib代理 应用 代理模式 代理模式(Proxy Pattern)是一种结构性模式.代理模式为一个对象提供了一个替身,以控制对这个对象的访问.即通过代理对象 ...

最新文章

  1. Oracle PLSQL 导出数据table xx contains one or more CLOB columns 解决方案
  2. asp.net 获取 当前日期时间 及 前后N天日期时间(DropDownList数据绑定)
  3. java 内存泄露对象排查_记录一次 java内存泄漏的排查
  4. 【LaTeX】E喵的LaTeX新手入门教程(6)中文
  5. skywalking链路追踪在微服务架构中的使用
  6. listview侧滑删除
  7. mxnet系列教程之1-第一个例子
  8. 什么是JavaScript中的回调函数?
  9. 90后程序员代码漏洞更多?
  10. 07-windows下Elasticsearch安装-elasticsearch-service服务
  11. oracle10G分区的创建与维护Oracle分区表和本地索引
  12. 面向对象进阶4:软件开发规范
  13. Django tips: 查看当前Request所执行的所有SQL
  14. linux firefox 解雇ie,Fire IE
  15. 计算机大赛教学辅助课件,职业教育:机械类一等奖作品《识读组合体视图教学辅助》PPT课件.ppt...
  16. 最新好用的服装零售进销存软件排行榜
  17. webp格式以及工具介绍
  18. 基于socket的即时通信系统的设计与实现
  19. 高德地图API的一些使用心得
  20. 2010年研究生答案Q278046046

热门文章

  1. python 切换环境_python多环境切换及pyenv使用过程详解
  2. 电脑开机卡住了怎么办_苹果电脑忘记开机密码怎么办?一段代码轻松解决
  3. linux 获取网站预览图,Shell脚本实现获取网页快照并生成缩略图 -电脑资料
  4. jsp中提供的四种属性范围
  5. 首次将项目从eclipse提交到服务器的SVN
  6. zTree动态添加节点
  7. springboot读取linux文件_SpringBoot 读取文件代码模版
  8. python中seaborn库_GitHub - a13544835729/python-seaborn: python seaborn库基础用法
  9. 计算机学硕考研复试编程能力,苏州大学计算机学硕专业考研复试真题
  10. .net 本地文件管理 代码_Gitee 在线解决代码冲突上线,解决冲突不再需要 Git 命令...