七、装饰器模式

ops/2024/12/23 3:16:17/

装饰器模式(Decorator Pattern)是一种结构型设计模式,允许在不改变对象自身的情况下,动态地向对象添加新功能。它通过将功能附加到对象的方式来增强其行为,提供了一种灵活的替代方案来使用子类扩展功能。

主要组成部分:

  1. 抽象构件(Component)

    • 定义一个接口或抽象类,声明了要装饰的对象的基本功能。
  2. 具体构件(ConcreteComponent)

    • 实现抽象构件的具体类,是被装饰的原始对象。
  3. 装饰器(Decorator)

    • 持有一个抽象构件的引用,并实现抽象构件的接口,用于扩展功能。
  4. 具体装饰类(ConcreteDecorator)

    • 继承自装饰器并添加额外功能。

优点:

  1. 灵活性:可以在运行时添加功能,而不影响其他对象。
  2. 单一职责原则:每个装饰类都有自己的职责,可以独立地进行扩展。
  3. 可替换性:可以在装饰器之间自由组合。

使用场景:

  • 需要在运行时添加额外功能或职责。
  • 希望通过组合来实现不同的行为,避免使用大量的子类。

JAVA: 

例如:制作咖啡(Coffee): 普通咖啡和价格, 那么加牛奶, 加糖都是对普通咖啡的增强


http://www.ppmy.cn/ops/106768.html

相关文章

用 CSS 实现太阳系运行效果

介绍实现最终效果结语介绍 在编程的浩瀚宇宙中,我们总是在探索能够以最简洁的方式创造出最酷炫效果的方法。而使用 CSS 制作响应式太阳系,绝对能提升你的编程乐趣。 如何用 CSS 实现这个神奇的太阳系呢?关键在于巧妙运用 CSS 的动画、定位和尺寸属性。通过定义不同的元素来…

如何清理Linux旧内核并设置默认内核版本

文章目录 1. 引言2. 检查和清理旧内核2.1 检查 /boot 目录中的残留文件2.2 手动删除与旧内核相关的文件2.3 更新 GRUB 配置2.4 清理旧内核包(可选) 3. 安装并保留特定内核版本3.1 安装内核版本 5.15.0-1193.2 删除其他不需要的内核版本 4. 设置默认内核版…

MATLAB绘图基础3:程序流程控制

参考书:《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。 3.程序流程控制 3.1 条件语句 条件语句用于根据条件的真假来选择不同的执行路径, M A T L A B {\rm MATLAB} MATLAB常见的条件语句包括: i f {\rm if} if语句和 s w i…

docker构建多系统架构

manifest是什么,干什么用 manifest是一个文件,这个文件包含了有关于镜像信息,如层、大小和摘要。docker manifest命令还向用户提供附加信息,比如构建镜像的操作系统和体系结构。而manifest list是一个镜像清单列表,用…

C/C++经典排序问题,sort函数使用

目录 1. 前言 2. 正文 2.1 问题 2.2 解决办法 2.2.1 思路 2.2.2 代码实现 2.2.3 测试结果 3. 备注 1. 前言 大家在学习C语言的时候,是不是经常被排序算法折磨的很难那首,其实都是但是在C中有专门的,排序函数,而且支持自定…

【最新华为OD机试E卷-支持在线评测】查找充电设备组合(200分)-多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,…

HCIP笔记12-交换(1)

三层架构:---企业内部设计的依据或参考 二层交换机 企业交换机--可配置--VLAN 无法配置---透明交换机 傻瓜交换机 接入层----提供端口密度 用于终端的就近接入 --二层交换机 AP 汇聚层(分布层)---流量的聚合--网关 DHCP 策略 ACL-QOS …

【2024数模国赛赛题思路公开】国赛C题第三套思路丨无偿自提

C题参考思路 C题是一道优化问题,目的是根据题目所给的种植限制条件以及附件数据建立目标条件优化模型,优化种植策略,有利于方便田间管理,提高生产效益,减少各种不确定因素可能造成的种植风险。整个题目最重要的问题在…