当前位置: 首页 > news >正文

设计模式-代理模式、装饰者模式

代理模式

Proxy(代理)—对象结构型模式定义:给某一个对象提供一个代理对象,并由代理对象控制原有对象的引用。
代理模式的核心思想是:创建一个代理对象,代理对象在调用目标方法时,可以插入额外的逻辑。
 


注意区分装饰者模式和代理模式的区别。在代理模式中,ComponentImpl 和 Proxy 类都实现了 IComponent 接口,Proxy 对象中虽然也维护着一个 ComponentImpl 对象,但一般情况下它是代理类自己初始化的,不像装饰者模式是通过 set 进去的,同时在接口方法即 operation() 中代理对象会限制外界对被代理对象的访问,而装饰者模式是装饰者给被装饰者添加额外的行为。
Spring AOP底层,就是动态代理模式的实现。
 


适用场景分析:
1.需要修改或屏蔽某一个或若干个类的部分功能,复用另外一部分功能。
2.需要拦截一批类中的某些方法,在方法的前后插入一些一致的操作,如Spring的AOP。

装饰者模式

Decorator(装饰)—对象结构型模式定义:动态地给一个对象添加一些额外的功能。就增加功能来说,装饰模式相比生成子类更为灵活。

ComponentImpl 和 Decorator 类都实现了 IComponent 接口,不同的是 ComponentImpl 提供了具体实现,而 Decorator 是先聚合 ComponentImpl 接着在自己的实现方法即 operation() 方法中做些处理(即装饰)后再调用 ComponentImpl 对象的具体实现。

io中inputStream在装饰模式的用法 BufferedInputStream

设计原则:

• 遵循迪米特(最少知识原则)

• 单一职责

• 开闭原则

• 破坏里氏替换原则

场景分析:

1.需要动态地给一个对象增加功能,这些功能可以动态地撤销。

2.IO流包装、数据源包装。

http://www.lryc.cn/news/576545.html

相关文章:

  • 【Java--SQL】${}与#{}区别和危害
  • git使用详解和示例
  • ByteMD+CozeAPI+Coze平台Agent+Next搭建AI辅助博客撰写平台(逻辑清楚,推荐!)
  • epitope3D: 精准预测蛋白表面的“抗原决定簇”
  • ABP VNext + 多数据库混合:SQL Server+PostgreSQL+MySQL
  • 【分布式机架感知】分布式机架感知能力的主流存储系统与数据库软件
  • 安卓应用启动页全版本兼容实战:从传统方案到Android 12+ SplashScreen API最佳实践
  • FPGA产品
  • 关于ubuntu 20.04系统安装分区和重复登录无法加载桌面的问题解决
  • KS值:风控模型的“风险照妖镜”
  • 北大肖臻《区块链技术与应用》学习笔记
  • 趣味数据结构之——数组
  • 给定一个整型矩阵map,求最大的矩形区域为1的数量
  • SRS WebRTC 入门
  • 【大模型】Query 改写常见Prompt 模板
  • 第27篇:SELinux安全增强机制深度解析与OpenEuler实践指南
  • uni-app项目实战笔记26--uniapp实现富文本展示
  • 【Actix Web 精要】Rust Web 服务开发核心技术与实战指南
  • [Java 基础]算法
  • 【AI实践】Mac一天熟悉AI模型智能体应用(百炼版)
  • nginx基本使用 linux(mac下的)
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(三十八) -> 构建HAR
  • 编译安装交叉工具链 riscv-gnu-toolchain
  • RabbitMQ-基础篇
  • FreeSWITCH配置文件解析(2) dialplan 拨号计划中xml 的action解析
  • 1.1 基于Icarus Verilog、ModelSim和Vivado对蜂鸟E203处理器进行仿真
  • 学习使用dotnet-dump工具分析.net内存转储文件(2)
  • YOLOv5 训练中参数优化方案
  • 测量 Linux 中进程上下文切换需要的时间
  • UniApp Vue3 模式下实现页面跳转的全面指南