当前位置: 首页 > 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流包装、数据源包装。

相关文章:

  • Vue3—插槽solt
  • 微机系统 - 第7章 -可编程接口芯片
  • 概率概率密度
  • GO 语言学习 之 函数
  • 基于MFC的遥感图像匹配程序设计
  • 前端进阶之路-从传统前端到VUE-JS(第一期-VUE-JS环境配置)(Node-JS环境配置)(Node-JS/npm换源)
  • SQL 子查询全位置解析:可编写子查询的 7 大子句
  • Hyper-v-中的FnOs--飞牛Nas虚拟磁盘扩容(不清除数据)
  • Java安装与使用教程
  • 栅极驱动器选的好SiC MOSFET高效又安全
  • Gradio全解13——MCP详解(4)——TypeScript包命令:npm与npx
  • 【龙泽科技】新能源汽车故障诊断仿真教学软件【吉利几何G6】
  • SRS WebRTC 入门
  • 【数据标注师】分类标注
  • Push-T, AloHa, Rlbench三个仿真环境信息
  • 为何需要防爆平板?它究竟有何能耐?
  • 给定一个整型矩阵map,求最大的矩形区域为1的数量
  • Redis 高可用分片集群:主从模式与哨兵机制详解
  • 【AI智能体】Dify 核心组件从使用到实战操作详解
  • 33.表复制和去重