7 装饰(Decorator)模式

1.含义

装饰模式又名包装(Wrapper)模式,以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。

 

与适配器模式的不同点:

它和委派对象实现同一个接口。

 

2.类图


3.类代码

/*
 * 抽象构件角色
 */
public interface Component {
	void sampleOperation();
}


/*
 * 具体构件角色
 */
public class ConcreteComponent implements Component {
	public ConcreteComponent() {
	}

	public void sampleOperation() {
		System.out.println("ConcreteComponent");
	}
}


/*
 * 装饰角色
 */
public class Decorator implements Component {
	private Component component;

	public Decorator(Component c) {
		this.component = c;
	}

	public Decorator() {

	}

	public void sampleOperation() {
		component.sampleOperation();		
	}
}


/*
 * 具体装饰角色
 */
public class ConcreteDecorator extends Decorator {
	public void sampleOperation() {
		super.sampleOperation();
	}
}


/*
 * 测试类
 */
public class Test {

	public static void main(String[] args) {
		Component c = new Decorator(new ConcreteComponent());
		c.sampleOperation();
	}
}
 

z

 

【知识分享】什么是同轴传输线结构? 同轴传输线的几何形状由中心导体组,嵌在介电材料(Dielectric)中,并且,被连续的外导体所包围,也被称为屏蔽(Shield)。内外导体有相同的几何中心轴,因此得名同轴(Coaxial)。 阅读详情

相关推荐

众灵科技24路舵机控制器二次开发实战(1)-STM32串口指令控制详解

本文详细介绍了如何通过STM32单片机对众灵科技24路舵机控制器进行二次开发,实现串口指令控制。文章从硬件连接、通信协议解析到STM32代码实战,手把手指导开发者打通控制链路,并重点讲解了如何调用预设动作组驱动六足机器人,为后续集成传感器、无线遥控等高级功能奠定基础。

weixin_29188997的博客 484

ES7 Decorator 装饰者模式

1、装饰模式 设计模式大家都有了解,网上有很多系列教程。 这里只分享装饰者模式以及如何使用 ES7 的decorator概念。 1.1、装饰模式 v.s. 适配器模式 装饰模式和适配器模式都是包装模式(Wrapper Pattern),它们都是通过封装其他对象达到设计的目的的,但是它们的形态有很大区别。 适配器模式我们使用的场景比较多,比如连...

嘿嘿 443

QMT与通达信代码实战:从预警到交易的自动化实现

本文详细介绍了如何利用QMT量化交易平台与通达信软件实现从预警到交易的全自动化。通过读取通达信预警生成的板块文件,QMT策略可自动执行买卖指令,有效解决手动交易滞后问题。文章提供了完整的代码框架、核心原理拆解及实盘注意事项,帮助投资者构建高效、纪律性的自动化交易系统。

ansible6ops的博客 649

ES7-Decorator-装饰者模式

装饰模式 仅仅包装现有的模块,使之 “更加华丽” ,并不会影响原有接口的功能 —— 好比你给手机添加一个外壳罢了,并不影响手机原有的通话、充电等功能; 使用 ES7 的 decorator ES7 中增加了一个 decorator 属性,它借鉴自 Python 下面我们以 钢铁侠 为例讲解如何使用 ES7 的 decorator。 以钢铁侠为例,钢铁侠本质是一个人,只是“装饰”了很多武器方才变...

weixin_34014277的博客 426

告别C盘爆红!手把手教你将WSL2下的Ubuntu 22.04完整迁移到D盘(附清理指南)

本文详细指导如何将WSL2下的Ubuntu 22.04从C盘无损迁移到D盘,包括导出备份、注销原系统、导入新位置等关键步骤,并提供迁移后的优化配置、开发环境衔接及长期维护技巧,帮助用户彻底解决C盘空间不足问题。

weixin_28698059的博客 475

RH850从0搭建Autosar开发环境【23】- Davinci Configurator之DCM实操实现DID的读取写入

RH850从0搭建Autosar开发环境【23】- Davinci Configurator之DCM实操实现DID的读取写入,结合Developer实现

weixin_42412049的博客 1811

性能监控体系搭建:从Prometheus部署到Spring Boot指标采集实战

性能监控是现代软件工程中的基础技术概念,通过收集系统运行时的关键指标数据来评估应用健康状态。其核心原理是基于数据采集、存储、分析和可视化四个环节构建完整监控链路,技术价值在于能够量化系统性能、快速定位瓶颈并指导优化决策。在应用场景上,性能监控广泛适用于微服务架构、高并发系统和资源密集型任务等场景。Prometheus作为开源监控解决方案,结合Grafana可视化工具,能够有效实现指标数据的采集与展示。在Spring Boot应用中,通过Actuator端点可以方便地暴露应用层性能指标,结合自定义业务指标监控

weixin_33946605的博客 555

车载以太网-ARP 动态 静态

车载以太网-ARP 动态 静态

天赐好车的博客 410

设计模式第7讲——装饰者模式(Decorator)

装饰者模式是一种结构型设计模式。一、什么是装饰者模式 二、角色组成 三、优缺点 四、应用场景 4.1 应用实例 4.2 java实例 五、代码实现5.0 UML类图5.1 Hero(英雄-抽象组件)5.2 BlindMonk(盲僧-具体构件)5.3 SkillDecorator(技能装饰-抽象装饰器)5.4 QDecorator(Q技能-具体装饰器)5.5 WDecorator(W技能-具体装饰器)5.6 EDecorator(E技能-具体装饰器)5.7

让~学习~成为一种习惯(橡 皮 人の技术博客) 6798

【Clickhouse】Cannot allocate block number in Zookeeper write prefix view location

我有一个问题,我CK集群跑批的时候,replicated表变成只读的了下面是CK的报错和当时ZK的日志。下面是zk报错开始 我认为是写入的时候,压力太大,ZK扛不住了,就按照博客里的建议优化了ZK的参数,现在偶尔还会只读,zk报错都是图里的那种clickhouse的集群是5分片的集群,数据量比较大。每小时批量一次,每次2-10W条数据,字段的话,不到200个字段,使用的 jdbc sink写入。

九师兄 836

2026 蓝牙技术趋势展望:信道探测、Auracast、高吞吐 HID 与 AI 融合引领行业变革

蓝牙技术2026年展望:信道探测、Auracast广播音频和AI融合将引领创新。蓝牙信道探测技术将实现亚米级精确定位,在工业资产追踪和汽车数字钥匙领域大显身手。Auracast广播音频将持续拓展公共场所应用,提升音频包容性体验。高数据吞吐量和超低延迟功能将支持AR/VR等新兴场景。AI与蓝牙的深度融合将推动可穿戴设备智能化发展,实现实时健康监测和个性化音频服务。蓝牙技术凭借其多功能性和创新力,正成为连接万物的关键技术,持续推动行业变革和生活品质提升。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 113

7、装饰模式(Decorator)

7、装饰模式(Decorator) 顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下: Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下: [java] view plaincopy publ

u014157053的博客 182

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

装饰器模式&&ES7 Decorator 装饰器

装饰器模式(Decorator Pattern)允许向一个现有的对象动态添加新的功能,同时又不改变其结构。相比JavaScript中通过鸡肋的继承来给对象增加功能来说,装饰器模式相比生成子类更为灵活。 装饰模式和适配器模式都是 包装模式 (Wrapper Pattern),它们都是通过封装其他对象达到设计的目的的,但是它们的形态有很大区别。 适配器模式我们使用的场景比较多,比如连接不同数据库的...

weixin_30477797的博客 138

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

7 装饰模式(Decorator)

顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下:Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下:public interface Sourceable {      public void method();  }  public clas

liubo的专栏 404

ES7 装饰者模式Decorator

什么是decorator 在程序开发过程中,我们可能希望某个类或者方法,并不是天生就具有很庞大,但是又不是很常用的功能。装饰者模式可以动态的给某个对象添加一些额外的职责,但是却不会影响其它的从这个类中派生出的其它对象。装饰者模式能够能够在不改变自身对象的基础上,在程序运行期间给对象动态的添加功能。这其实就像我们在游戏中要给游戏角色买装备一...

weixin_34007886的博客 113

decorator模式 java_Java设计模式(7)装饰模式(Decorator模式)

Decorator常被翻译成"装饰",我觉得翻译成"油漆工"更形象点,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee。这两种实体在Decorator模式中是必须的。Decorator定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆。使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活。为什么使用Decorator我们通常可以使用继承...

weixin_39847034的博客 149

23种设计模式(7)装饰模式(Decorator模式)

装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例 1、创建一个接口 public interface Sourceable { public void method(); } 2、创建一个被装饰类 public class Source implements Sourceable { @O...

weixin_40215624的博客 186

java设计模式7——装饰模式(Decorator)

顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下:         Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下: public interface Sourceable { public void method();

忆、瞻的专栏 722

设计模式(7)--Decorator 装饰模式

装饰模式也是一种日常编码中经常会不自觉采用的设计模式。其核心理念是:一个类有自己的核心功能和职责,且这个类的代码相对已经固定,不希望改动维护。现在要为这个类加入一谢额外的功能,这些功能不是一定必须的,而且可能是动态添加的,根据实际要求加入某一种或几种。但是不管加入什么额外功能,客户眼中始终还是在操作这个核心功能类。这个时候,我们的处理方式就是,为每种动态的功能,单独的提供一个类,来完成对核心类的“装

Face3的博客 669

Java 之 23 种设计模式解析——7、装饰模式(Decorator)

7、装饰模式(Decorator) 顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下: Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下: 1. public interface Sourceable { 2. public voi...

毕富国的博客 639

java设计者模式7(装饰者模式Decorator)

装饰者模式

HuangSongImmanuel的博客 132
上一篇: 6 合成(Composite)模式
下一篇: 8 代理(Proxy)模式
O2AtomLife
博客等级 码龄19年 2粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值