当前位置: 首页 > 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.lqws.cn/news/559981.html

相关文章:

  • [Java 基础]LinkedList
  • 告别脚本!用浏览器为 AWS CLI 实现真正的 Cognito 单点登录
  • 基于Spring Boot的网上购物平台设计与实现
  • 【软考--软件设计师】10.2 关系型数据库
  • 网络安全体系结构和安全防护
  • Linux内核网络协议栈深度解析:面向连接的INET套接字实现
  • 【AI实践】Mac一天熟悉AI模型智能体应用(百炼版)
  • 前端React和Vue框架的区别
  • Spring AI Alibaba 入门指南:打造企业级 AI 应用
  • 全面拥抱vue3
  • 编译安装交叉工具链 riscv-gnu-toolchain
  • 鸿蒙 Scroll 组件深度解析:丝滑滚动交互全场景实现
  • uni-app项目实战笔记26--uniapp实现富文本展示
  • 中国农村统计年鉴-Excel版(1985-2024年)
  • 机器学习框架(1)
  • c#激光设备行业ERP软件进销存软件库存管理软件财务管理软件
  • kubernetes部署3节点高可用elasticsearch v8.14.3
  • OpenCV图像噪点消除五大滤波方法
  • Cesium快速入门到精通系列教程十一:Cesium1.74中高性能渲染上万Polyline
  • Java笔记
  • 机器学习配置环境
  • Ultralytics YOLO超参数调整指南(一)
  • 利用ROS打印novatel_msgs/INSPVAX
  • JSON简介及其应用
  • 创客匠人解析:身心灵赛道创始人 IP 打造核心策略
  • 动捕关节数据采集系统设计与实现
  • Java安装与使用教程
  • 实现一个AI大模型当前都无法正确实现的基础二叉树读取算法
  • TCP 在高速网络下的大数据量传输优化:拥塞控制、效率保障与协议演进​
  • OpenAI:Let’s Verify Step by Step 解读