设计模式-装饰者模式

SAP-PLM传输MBOM传输至SAP BOM 项目文本 (行 2)PLM创建及修改BOM接口。PLM 创建BOM接口抬头。BOM 项目文本(行1)PLM 创建BOM接口抬头。PLM BOM 错误消息。PLM BOM接口组件。组件数量 (BTCI) 阅读详情

以饮料为例
Beverage接口

public interface Beverage {

	 public int getprice();//获得价格
	 
	 public String getDescription();//获得描述
	
}

CoffeeBean1类和CoffeeBean2类

public class CoffeeBean1 implements Beverage{

	 
	@Override
	public int getprice() {
		// TODO Auto-generated method stub
		return 10;
	}

	@Override
	public String getDescription() {
		String desc="第一种咖啡豆";
		
		return desc;
	}

}

public class CoffeeBean2 implements Beverage{

	@Override
	public int getprice() {
		// TODO Auto-generated method stub
		return 20;
	}

	@Override
	public String getDescription() {
		String desc="第二种咖啡豆";
		
		return desc;
	}

}

DecorateClass装饰类

public interface DecorateClass extends Beverage{
   String decorate="我只是装饰器";
	
}

多个装饰类(这里只写了两个)

public class Milk implements DecorateClass{

	  private Beverage beverage;
	  
	
	public Milk(Beverage beverage) {
		super();
		this.beverage = beverage;
	}

	@Override
	public int getprice() {
		// TODO Auto-generated method stub
		return 5+beverage.getprice();
	}

	@Override
	public String getDescription() {
		String desc="加了牛奶";
		return beverage.getDescription()+desc;
	}
}

public class Sugar implements DecorateClass{

	  private Beverage beverage;
	  
	
	public Sugar(Beverage beverage) {
		super();
		this.beverage = beverage;
	}

	@Override
	public int getprice() {
		// TODO Auto-generated method stub
		return 2+beverage.getprice();
	}

	@Override
	public String getDescription() {
     String desc="加了糖";
     
		return beverage.getDescription()+desc;
	}

}


测试类

public class TestDecoratePattern {

	public static void main(String[] args) {
		
		 Beverage beverage=new Milk(new Sugar(new CoffeeBean1()));
		System.out.println("价格:"+beverage.getprice());
		System.out.println("描述:"+beverage.getDescription());
	}
}
输出:
价格:17
描述:第一种咖啡豆加了糖加了牛奶

以下文本内容来自
https://blog.youkuaiyun.com/zhshulin/article/details/38665187?utm_source=copy 这篇文章介绍的更详细

为什么要使用装饰者模式?

动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。不改变接口的前提下,增强所考虑的类的性能。

何时使用:

1)需要扩展一个类的功能,或给一个类增加附加责任。

2)需要动态的给一个对象增加功能,这些功能可以再动态地撤销。

3)需要增加一些基本功能的排列组合而产生的非常大量的功能,从而使继承变得    不现实。

ESP32-CAM 赋能 AI 视觉巡检小车:自主避障与目标追踪实现全解析 本文基于 ESP32-CAM 实现了低成本 AI 视觉巡检小车的核心功能,硬件成本<100 元,兼顾自主避障与目标追踪。算法升级:移植 YOLOv5nano 量化模型(INT8),提升目标检测精度(如识别巡检场景中的 “异常物体”“人员”);无线拓展:通过 MQTT 协议将巡检图像、距离数据上传到阿里云 / 腾讯云,实现远程监控;多传感器融合:增加温湿度(DHT11)、红外测温(MLX90614)模块,扩展巡检维度;路径规划:结合 SLAM 算法,实现自主建图与路径巡检。 阅读详情

相关推荐

【深度学习】手把手教你在远程服务器上跑 YOLOv3 相关代码(含环境配置)

这篇文章主要记录了如何配置项目环境以及如何在远程服务器上跑 YOLOv3 模型。

作者正在煮茶中... 2383

通过装饰模式来包裹被装饰的函数可以用类@decorate_class,也可以用函数@decorate_function

def decorate_function(original_function): def wrapper_function(*args,**kwargs): print('original_function name is {}'.format(original_function.__name__)) return original_function(*a...

weixin_42470128的博客 267

python 爬虫 xpath 存储到数据库

参考

我是张先生 1288

Java设计模式之装饰者模式

Java设计模式之装饰者模式目录一、定义二、具体实现三、使用场景四、优缺点 目录 装饰者模式是结构性设计模式之一,其在不必改变类文件及不使用继承的情况下,动态地扩展一个对象的功能。它通过创建一个包装对象(即装饰)来包裹真实的对象。 一、定义 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。 装饰着模式的结构图: 如上结构图所示,装饰者模式中有如下角色: Component:可以是接口或者是抽象类,被装饰的最原始的对象。 ConcreteComponent:组件具体实现类。

红日 6561

LangGraph实战训练营-打造 WhatsApp 全自动消息收发AI智能助手

本文系统梳理了项目架构(WhatsApp Bridge + Talon Host + LangGraph Agent Harness三层设计)、完整环境搭建流程(Docker/本地双模式部署)、核心原理(WhatsApp桥接机制、NVIDIA Parakeet语音转录管线、Cron定时调度、Agent图状状态机),并提供了基础对话、文件操作、语音处理、定时任务等六大实战示例。同时涵盖安全策略、性能优化、数据备份等生产级运维实践,以及十个高频问题的排查方案。

program哲学 190

MCAL知识点(十):ERU驱动配置详解

ERS:外部请求单元ETL:中断逻辑单元OGU:输出逻辑单元MCU里面配置要使用的功能和选择输入的管脚,注意上述模块关注点讲述的ERU必须和边沿检测模块相关联。

梦想技术家 1221

装饰设计模式

装饰设计模式 ** 说明:装饰设计模式,可以在原有技能的基础上,新增技能,降低继承所带来的耦合性 ** 示例:通过模拟Java官方API中的FileWriter与BufferedWriter来模拟装饰设计模式 第一步:定义接口 public abstract class Writer2 { public abstract void write(); } 第二步:定义过时的类 public...

哈 1034

AMBA-CHI协议详解(十)

该规范提供了一个Request Retry(请求重试)机制,确保当请求到达一个Completer 时,它要么被接受,要么被给予一个RetryAck响应,以防止阻塞REQ通道。

Crazzy_M的博客 984

设计模式——装饰模式详解

装饰模式动态地给一个对象添加一些额外的功能,相对于继承的方式,更加灵活。 装饰模式经常被误认为是代理模式。装饰模式是以对客户透明的方式扩展对象的功能,是继承关系的一个替代方案。而代理模式则是给一个对象提供一个代理对象,并由代理对象来控制原有对象的引用。 前者重在增加功能,后者重在对代理对象施加控制,不是对对象本身功能的增强。...

关于Android开发的一些技术点总结 ╮( ̄▽ ̄”)╭ 1万+

【WRF-FDDA】观测 Obs nudging 的配置与使用说明(中)

WRF-FDDA

WW、forever的博客 280

【漏洞复现】Apache Tomcat远程代码执行漏洞(CVE-2024-56337)

CVE-2024-56337是一个存在于Apache Tomcat中的TOCTOU(Time-of-Check Time-of-Use)竞争条件漏洞。此漏洞源于对先前漏洞(CVE-2024-50379)的不完整修复。若默认servlet是可写的(参数readonly设置值为false,该设置为非默认设置)表示不区分大小写文件系统,在负载下并发读取和上传同一文件可以绕过Tomcat的大小写检查。攻击者可以通过构造恶意请求上传含恶意JSP代码的文件,使其触发解析并执行这些文件,从而导致远程代码执行。

李同學AI安全 3195

设计模式之装饰模式

本文介绍了装饰模式的理论与实现。装饰模式能动态地为对象添加职责,比继承更灵活。文章首先阐述了装饰模式的结构,包含抽象构件、具体构件、抽象装饰类和具体装饰类4个角色,并给出了UML类图。然后介绍了透明和半透明两种装饰模式的区别,以及省略抽象装饰类的简化方式。最后通过Java代码示例演示了透明和半透明装饰模式的实现,分别以GUI组件添加滚动条和图形添加阴影效果为例。装饰模式适用于需要动态扩展对象功能且避免继承导致类爆炸的场景,但会增加系统复杂度。完整代码已上传至GitHub仓库。

C2961034922的博客 983

ParaView: GUI 轴网格

ParaView: GUI 轴网格

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1922

彻底搞懂设计模式DesignPattern-装饰者模式

装饰者模式 定义 装饰者模式: 动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp) 这里提到的动态的将新功能附加到对象和ocp原则,在后面的应用实例上会以代码的形式体现,请同学们注意体会。 装饰者模式原理 装饰者模式就像打包一个快递 主体: 比如:陶瓷、衣服 (Component) // 被装饰者 包装:比如:报纸填充、塑料泡沫、纸板、木板(Decorator) Component 主体:比如类似前面的Drink ConcreteComponent和

Ping 285

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

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

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

设计模式之装饰器模式

设计模式之装饰器模式

weixin_61492871的博客 1209

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

设计模式之装饰器设计模式/包装设计模式

给对象增加功能,一般两种方式,继承或关联组合,将一个类的对象嵌入另一个对象中,由另一个对象来决定是否调用嵌入对象的行为来增强功能,这个就是装饰器模式,比继承模式更加灵活。也叫包装设计模式,属于结构型模式,它是作为现有的类的一个包装,允许向一个现有的对象添加新的功能,同时又不改变其结构。JDK源码里面应用最多的就是IO流,大量使用装饰器设计模式。以动态、透明的方式给单个对象添加职责,但又能不改变其结构。角色(装饰者和被装饰者有相同的超类Component)装饰器设计模式(Decorator Pattern)

2302_76363587的博客 1099

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java设计模式之装饰器设计模式

装饰器设计模式是一种结构型设计模式,它允许动态地将行为添加到对象中,而无需在对象的类中使用子类化。它允许您通过将对象封装在一个具有新行为的对象中来动态地修改对象的行为。 这种模式是基于组合的思想,而不是继承。 可动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

荷逸的博客 1041

装饰者设计模式(Decorator)、装饰者设计模式在 FilterInputStream 中的应用

1. 概述 1.1 什么是装饰设计模式? 假如现在有一块蛋糕,涂上奶油,就是奶油蛋糕,加上水果就是水果奶油蛋糕,加上生日快乐四个字就是生日蛋糕。 奶油蛋糕,水果奶油蛋糕,生日蛋糕其核心都是蛋糕,经过装饰之后成为目的更明确的蛋糕,更能解决问题。 像这种不断为对象添加装饰的模式就叫 Decorator 模式,Decorator 指的是装饰物。 1.2 装饰者设计模式的角色 核心角色(Componen...

学习笔记 1012

设计模式---装饰模式(DesignPattern_Decorator)

摘录自:设计模式与游戏完美开发 十年磨一剑,作者将设计模式理论巧妙地融入到实践中,以一个游戏的完整实现呈现设计模式的应用及经验的传承 《轩辕剑》之父——蔡明宏、资深游戏制作人——李佳泽、Product Evangelist at Unity Technologies——Kelvin Lo、信仁软件设计创办人—— 赖信仁、资深3D游戏美术——刘明恺 联合推荐全书采用了整合...

su9257的博客 117

java设计模式——装饰者模式

目录一、装饰者模式的定义与类型二、装饰者模式的适用场景三、装饰者模式的优点四、装饰者模式的缺点五、装饰者模式相关的设计模式六、普通示例:七、普通示例演进,使用装饰者模式示例: 一、装饰者模式的定义与类型 1、定义 在不改变原有对象的基础之上,将功能附加到对象上 提供了比继承更具有弹性的替代方法(扩展原有对象功能) 2、类型 结构型 二、装饰者模式的适用场景 扩展一个类的功能或给一个类添加附加职责 动态的给一个对象添加功能,这些功能可以在动态的撤销 三、装饰者模式的优点 继承的有力补充,比继承灵

小志的博客 1044

装饰者设计模式

装饰者模式的定义 装饰者模式:动态的 将新功能 附加到对象身上 。在对象功能扩展方面,它比继承更加有弹性,装饰者模式也体现了开闭原则(OCP) 代码实现 现在模仿一个场景哈,什么场景呢?就是取咖啡店点咖啡这么一个场景 我们先定义一个抽象类,用来描述咖啡和价格 package com.java.springtest.decorator; /** * @author Woo_home * @...

Woo_home的博客 1451

设计模式之装饰设计模式

解决方案:动态的给饮料添加新的功能,而不需要修改饮料的代码。就增加功能来说,装饰模式比继承更加灵活。找出基本组件和可选层次。问题:饮料店订单系统,饮料有咖啡、奶茶、果汁,饮料可以加糖、加奶、加冰。就增加功能来说,Decorator 模式相比生成子类更为灵活。(Decorator) 是一种结构型设计模式,

qq_74811378的博客 443

用装饰器设计模式装饰

装饰图案是广泛使用的结构图案之一。 此模式在运行时动态更改对象的功能,而不会影响对象的现有功能。 简而言之,此模式通过包装将附加功能添加到对象。 问题陈述: 想像一下我们有一个比萨饼,该比萨饼已经用番茄和奶酪烤制的情况。 之后,您只需要记住,您需要根据客户的选择添加一些其他浇头。 因此,您需要在旅途中再添加一些配料,例如鸡肉和胡椒粉。 意图: 动态地从对象中添加或删除其他功能或职责...

最佳 Java 编程 217

浅谈装饰器设计模式

浅谈装饰器设计模式一、概念二、结构如何理解装饰器设计模式的运行原理?下面给出一个简单的示例 一、概念 《Thinking in Java》: 装饰器模式使用分层对象来动态透明地向单个对象中添加责任。装饰器指定包装在最初地对象周围地所有对象都具有相同的基本接口。某些事物是可装饰的,可以通过将其它类包装在这个可装饰对象的四周,从而将功能分层,这使得对装饰器的使用是透明的——无论对象是否被装饰,你都拥...

进阶笔记 528

设计模式之装饰者模式

装饰者模式是一种结构型设计模式,它允许在不修改现有对象结构的情况下,动态地添加功能或行为。在装饰者模式中,我们定义了一个装饰者类来包装原始对象,从而扩展其功能或行为。以下是一个使用Java代码描述装饰者模式的示例:首先,我们定义一个接口Component,它表示一个抽象组件,可以是一个具体对象或者是一个抽象对象,它定义了一个操作方法operation。然后,我们定义一个具体组件ConcreteComponent,实现Component接口,它是我们需要被装饰的原始对象。

swadian2008的博客 933

23种设计模式-装饰器(Decorator)设计模式

23种设计模式-装饰器(Decorator)设计模式

Hanson的博客 1677
上一篇: Spring 静态代理和动态代理(继承和CGLIB库)
下一篇: SpringMVC入门 注解的和非注解的处理器映射器和处理器适配器
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值