Java装饰器模式,装饰器模式通常通过创建一个接口和一个或多个实现了该接口的类来开始,然后创建装饰器类,这些类也实现了相同的接口

1、定义一个接口Component

public interface Component {  void operation();  
}

2、创建一个实现了Component接口的简单类SimpleComponent

public class SimpleComponent implements Component {  @Override  public void operation() {  System.out.println("SimpleComponent operation.");  }  
}

3、创建一个装饰器基类Decorator,它也实现了Component接口,并持有一个对Component对象的引用

public abstract class Decorator implements Component {  protected Component component;  public Decorator(Component component) {  this.component = component;  }  @Override  public void operation() {  if (component != null) {  component.operation();  }  }  
}

4、创建一个具体的装饰器类,例如ConcreteDecoratorA,它添加了一些额外的功能

public class ConcreteDecoratorA extends Decorator {  public ConcreteDecoratorA(Component component) {  super(component);  }  @Override  public void operation() {  super.operation(); // 调用被装饰对象的operation方法  addedFunctionA(); // 添加额外的功能A  }  private void addedFunctionA() {  System.out.println("ConcreteDecoratorA added function.");  }  
}

5、编写一个测试类来展示如何使用装饰器

public class DecoratorPatternDemo {  public static void main(String[] args) {  // 创建一个简单组件  Component simpleComponent = new SimpleComponent();  // 使用装饰器A装饰简单组件  Component decoratedComponent = new ConcreteDecoratorA(simpleComponent);  // 调用被装饰后的组件的operation方法  decoratedComponent.operation();  }  
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/848599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SD8055单节锂电池完整恒流线性充电器USB电源充电循环

SD8055是一款用于单节锂离子电池的完整恒流/恒压 线性充电器。其ThinSOT封装和较低的外部元件数量 使SD8055非常适合便携式应用。此外,SD8055是s特 定的 可在USB电源规格范围内工作由于内部MOSFET结构 ,不需要外部感测电阻,也不需要阻塞二极管…

如何在 Mac 上使用 Windows 版 Excel 的全部功能

作为 Mac 用户,你是否怀念 Excel 的一些关键功能?是不是在 Mac 版 Excel 中找不到全面的 VBA、Active X 和表单控件、智能标签、Power Pivot 等关键工具?Mac 用户们,其实你不必错过这些功能。终极解决方案就是:通过 Pa…

CR80通用清洁卡:证卡打印机、ATM机、POS机、读卡器等卡片设备清洁维护的好助手!

随着科技的进步,ATM机、POS终端、门禁系统、证卡打印机、读卡器等卡片设备在我们的日常生活中扮演着越来越重要的角色,些设备在长时间使用和环境因素的影响下,容易积聚油脂、灰尘和其他污染物,从而对其性能和功能产生负面影响。 深…

外企跨国大数据迁移的注意事项

跨国数据迁移,对汽车行业来说,是一桩大事。跨国公司在进行这一操作时,会遇到不少挑战,比如网络延迟、数据安全、成本控制等等。今天,咱们就聊聊跨国大数据迁移中,跨国车企需要留意的几个关键点。 跨国大数据…

重学java 64.IO流 字符流

Action speak louder than words —— 24.6.5 字符输入流 一、字节流读取中文的问题 1.注意: 字节流是万能流,这个万能更侧重于文件复制,但是尽量不要边读边看 2.原因: UTF-8:一个汉字占三个字节 GBK:一…

ufw防火墙基本操作

ufw防火墙基本操作 ufw防火墙的基本操作包括以下几个方面: 安装ufw: 在Ubuntu系统上,可以使用以下命令安装ufw:sudo apt-get update 和 sudo apt-get install ufw。 启动、停止和检查状态: 启动防火墙:su…

IO流-----各种流(对象流,内存流,打印流,随机访问流)

各种流 各种流:对象流:操作:对象输入输出流:写入数据:读取数据: 内存流:内存输出流:内存输入流: 打印流:字节打印流:字符打印流: 随机…

linux和 qnx 查看 网卡网络流量

netstat -i netstat -i和-s-CSDN博客

BOM 常见对话框用法

当涉及到 BOM(浏览器对象模型)中的对话框时,我们可以使用以下方法来与用户进行交互。 alert() 对话框: 这个对话框用于向用户显示一个简单的提示信息,并等待用户点击确定按钮后关闭对话框。 alert("Hello World!");conf…

前后端项目知识概述总结

一、什么是ECharts? 是一个开源的,纯JavaScript的图表库,它提供了一整套丰富的图表类型,包括折线图、柱状图、饼图、雷达图、散点图、地图、热力图、箱型图等等,用于各种数据的可视化需求 二、什么是JSP? 建立在Servl…

Windows 2000 Server:安全配置终极指南

"远古技术,仅供娱乐" 💭 前言:Windows 2000 服务器在当时的市场中占据了很大的比例,主要原因包括操作简单和易于管理,但也经常因为安全性问题受到谴责,Windows 2000 的安全性真的那么差吗&#x…

虹科免拆诊断案例 | 2013 款路虎神行者 2 车偶发性无法起动

故障现象 一辆2013款路虎神行者2车,搭载2.0 L Si4 Petrol发动机,累计行驶里程约为4.5万km。车主反映,车辆偶发性无法起动,故障出现时,尝试起动发动机,组合仪表上会出现“挡位不在驻车挡”“充电系统故障”…

python如何根据xy坐标在png图片上标记红点

要在Python中根据x、y坐标在PNG图片上标记红点,你可以使用PIL(Python Imaging Library,也称为Pillow)库。以下是一个简单的示例,展示了如何做到这一点: 首先,确保你已经安装了Pillow库。如果没…

【阿里云】在云服务器ECS 安装MySQL、本地远程连接或宝塔连接(手动部署)

目录 一、安装MySQL 二、配置MySQL 三、远程访问MySQL数据库 四、Navicat本地连接远程MySQL 五、宝塔连接MySQL 如果你是使用宝塔安装的MySQL请绕过,以下是通过命令行模式(手动部署)进行安装、配置及运行。 安装:MySQL8.0 …

【java前端课堂】01_final和private的区别

目录 简介: 下面是这两个关键字的简单总结: 示例: 使用 final 限制类不被继承: 简介: 在Java中,我们使用final来限制一个类不被其他类继承,这是为了确保类的实现不会被修改或破坏。而private…

【golang学习之旅】Go中的cron定时任务

系列文章 【golang学习之旅】报错:a declared but not used 【golang学习之旅】Go 的基本数据类型 【golang学习之旅】深入理解字符串string数据类型 【golang学习之旅】go mod tidy 【golang学习之旅】记录一次 panic case : reflect: reflect.Value.SetInt using…

【天气预报game】

要编写一个简单的天气预报游戏代码,我们可以使用Python语言。这个游戏可以模拟基本的天气预报功能,让玩家输入一个城市,然后返回该城市的天气情况。我们可以使用一个预定义的天气数据库,或者使用网络服务来获取实时天气数据。 下面…

Python编程学习第一篇——制作一个小游戏休闲一下

到上期结束,我们已经学习了Python语言的基本数据结构,除了数值型没有介绍,数值型用的非常广,但也是最容易理解的,将在未来的学习中带大家直接接触和学习掌握。后续我们会开始学习这门语言的一些基础语法和编程技巧&…

cs与msf权限传递

cs传递到msf 1,先启动cs ┌──(root㉿ring04h)-[~/cobalt_strike_4.7] └─# ./teamserver 192.168.196.144 123456 ​ ┌──(root㉿ring04h)-[~/cobalt_strike_4.7] └─# ./start.sh ​ 2,上传木马,上线主机 3,msf配置一个…

暑期社会实践来了,这份投稿攻略你收藏好!

一、文字投稿要求 (一)实践纪实类 1.内容充实,字数不低于1500字,标题10-30字,不允许用“精彩飞扬——大学实践队”形式,要求用一句话标题。导语新闻五要素齐全(即何人、何时、何地、何事、何因…