设计模式 - 装饰者模式

定义

Attach additional responsibilities to an object dynamically.
Decorators provide a flexible alternative to subclassing for extending functionality.

UML

实例

类的扩展extend,串口接收数据,

  1. 无需修改代码即可使用对象,且在运行时为对象新增额外的行为。
  2. 不用继承来扩展对象行为。

比较

比较 装饰者模式 备注
适配器模式 装饰者能在不改变对象接口的前提下强化对象功能,支持递归组合 适配器对已有对象的接口进行修改,为被封装对象提供不同的接口,不支持递归
代理模式 装饰者为对象提供加强的接口 为对象提供相同的接口
责任链模式 各种装饰可以在遵循基本接口的情况下扩展对象的行为,无法中断请求的传递 责任链的管理者可以相互独立地执行一切操作,还可以随时停止传递请求
组合模式 装饰者类似于组合,但其只有一个子组件;为被封装对象添加额外的职责 组合仅对其子结点的结果进行汇总
策略模式 装饰者可以更改对象的外表 策略模式可以改变其本质
代理模式 装饰者的生成由客户端进行控制 代理自行管理其服务对象的生命周期

装饰者和代理有着相似的结构,都基于组合原则,即一个对象将部分工作委派给另外一个对象。
装饰者和组合的设计都可以和原型模式配合,用原型复制复杂结构,而非从零开始重新构造。

posted @ 2022-04-21 23:44  wesson2019  阅读(22)  评论(0编辑  收藏  举报