java设计模式--装饰者模式(Decorater Pattern)

Java设计模式之装饰器模式详细讲解和案例示范 抽象组件(Component):定义一个接口,供具体组件和装饰器继承。具体组件(ConcreteComponent):实现抽象组件接口,代表要装饰的原始对象。装饰器(Decorator):持有一个抽象组件的引用,并实现抽象组件接口。具体装饰器(ConcreteDecorator):继承装饰器,并向其添加新的功能。这种模式的核心思想是将功能附加到对象,而不是通过子类扩展。Spring框架是Java开发中最为流行的框架之一,它通过各种设计模式的运用来实现高扩展性和灵活性。 阅读详情

装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象

以下情况使用Decorator模式
1. 需要扩展一个类的功能,或给一个类添加附加职责。
2. 需要动态的给一个对象添加功能,这些功能可以再动态的撤销。
3. 需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变的不现实。
4. 当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。

这里写图片描述

给个例子,这里我们实现多种功能的车,看代码:

public interface ICar {
    void move();
}

//ConcreteComponent 具体构件角色(真实对象)
class Car implements ICar {
    @Override
    public void move() {
        System.out.println("陆地上跑!");
    }
}

//Decorator装饰角色
class SuperCar implements ICar {
    protected ICar car;
    public SuperCar(ICar car) {
        super();
        this.car = car;
    }

    @Override
    public void move() {
        car.move();
    }
}

//ConcreteDecorator具体装饰角色
class FlyCar extends SuperCar {

    public FlyCar(ICar car) {
        super(car);
    }

    public void fly(){
        System.out.println("天上飞!");
    }

    @Override
    public void move() {
        super.move();
        fly();
    }

}

//ConcreteDecorator具体装饰角色
class WaterCar extends SuperCar {

    public WaterCar(ICar car) {
        super(car);
    }

    public void swim(){
        System.out.println("水上游!");
    }

    @Override
    public void move() {
        super.move();
        swim();
    }

}

//ConcreteDecorator具体装饰角色
class AICar extends SuperCar {

    public AICar(ICar car) {
        super(car);
    }

    public void autoMove(){
        System.out.println("自动跑!");
    }

    @Override
    public void move() {
        super.move();
        autoMove();
    }

}

测试类:

public class Client {
    public static void main(String[] args) {
        Car car  = new Car();
        car.move();

        System.out.println("增加新的功能,飞行----------");
        FlyCar flycar = new FlyCar(car);
        flycar.move();

        System.out.println("增加新的功能,水里游---------");
        WaterCar  waterCar = new WaterCar(car);
        waterCar.move();

        System.out.println("增加两个新的功能,飞行,水里游-------");
        WaterCar waterCar2 = new WaterCar(new FlyCar(car));
        waterCar2.move();

    }
}
从Oracle迁移数据到Hadoop 目标:把Oracle 下的数据文件迁移到 Hadoop , 数据表都是上亿条,每个数据表的空间都超过100G。 关键是建立数据文件是UTF8格式,这样数据中的汉字在Hadoop 里显示才正常。 平台:CentOS 6.10 工具:Python 2.7 cx_Oracle 库 Oracle10.2.0.4.0 Hadoop 2.7.2-transwarp-5.2.1 1. 查看表... 阅读详情

相关推荐

Index-TTS-1.5:多模态语音合成的技术演进与商业落地实践

本文深入探讨了Index-TTS-1.5在多模态语音合成领域的技术演进与商业落地。该模型基于GPT风格的自回归Transformer架构,通过优化条件编码器和引入字符-拼音混合建模,显著提升了语音生成的稳定性、精准度和真实感,实现了高质量的零样本语音克隆。文章还详细介绍了其云端体验、本地WebUI部署及ComfyUI集成等实战路径,并分析了其在虚拟数字人、个性化内容创作等商业场景中的应用潜力与挑战。

weixin_29098367的博客 402

java装饰者模式decorater

装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式的结构   装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。  装饰模式的类图如下:    在装饰模式中的角色有:  ●  抽象构件(Comp

braveheartzj的博客 774

智能车竞赛环岛处理全解析:从图像识别到状态机控制

在嵌入式系统与自动控制领域,状态机是管理复杂系统行为、实现清晰逻辑流的核心设计模式。其原理在于定义一组有限的状态,以及触发状态迁移的事件和条件,从而将连续、模糊的过程分解为离散、确定的阶段。这种技术在机器人导航、工业自动化等场景中价值显著,尤其适用于需要应对多种场景、做出序列化决策的场合。在智能车竞赛中,赛道元素识别与路径跟踪是典型应用,其中环岛作为连续闭环的复杂场景,对系统的鲁棒性和决策连贯性提出了更高要求。通过图像处理提取赛道边线、宽度和曲率等特征,结合陀螺仪等传感器数据,可以构建一个专门处理环岛的状态

weixin_34033624的博客 564

Java设计模式-装饰器模式(Decorator)

使用的场景:1、扩展一个类的功能。2、动态增加功能,动态撤销。

qq_37400096的博客 1410

【ESP32-S3量产指南】基于Flash下载工具实现Release模式Flash加密与安全配置

本文详细介绍了ESP32-S3量产阶段如何通过Flash下载工具实现Release模式下的Flash加密与安全配置。从加密模式选择、工具配置到分区表优化,提供了一套完整的量产安全解决方案,帮助开发者有效防止固件泄露和篡改,确保设备安全。

weixin_28730131的博客 231

告别龟速与断连:Arduino IDE下ESP32及ESP32-CAM一站式环境部署指南

本文提供Arduino IDE下ESP32及ESP32-CAM一站式环境部署指南,解决下载速度慢、断连等常见问题。通过国内镜像源加速、详细步骤讲解和ESP32-CAM专属配置技巧,帮助开发者快速完成环境搭建,避免常见陷阱,提升开发效率。

weixin_30576827的博客 771

AI编程实战:用Claude+Cursor快速开发Python小游戏

AI代码生成技术正在改变软件开发流程,其核心原理是通过大语言模型理解自然语言需求并输出可执行代码。在游戏开发领域,结合Pygame等成熟框架,开发者可以快速实现原型验证。本文以Python游戏开发为例,详解如何利用Claude AI与Cursor编辑器实现高效开发,涵盖环境配置、prompt工程、代码优化等实战技巧。通过模块化设计、碰撞检测优化等工程实践,展示AI辅助编程在快速迭代开发中的技术价值,特别适合独立开发者和教育类项目应用。

weixin_30919571的博客 646

用Python+OpenCV给斗地主做个‘外挂’:手把手教你写个桌面记牌器(附源码)

本文详细介绍了如何使用Python和OpenCV开发一个智能斗地主记牌器,包括环境搭建、图像采集与预处理、扑克牌识别技术及PyQt5界面设计。通过实战案例,帮助开发者掌握图像处理与界面开发的结合应用,提升游戏辅助工具的编写能力。

weixin_29079643的博客 546

Java设计模式-----Decorator装饰模式

1. 概述 若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上。 通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增加行为...

WEBCODE 232

鱼眼双目测距实战:从OpenCV标定到SGBM匹配的完整流程解析

本文详细解析了鱼眼双目测距的完整流程,从OpenCV标定到SGBM匹配,涵盖标定、校正、匹配和测距四个关键阶段。通过实战经验分享,帮助开发者解决鱼眼镜头强畸变带来的测距挑战,提升测距精度至5%以内。特别适合机器人导航、自动驾驶和VR领域的开发者参考。

weixin_27298377的博客 124

ComfyUI 汉化教程(中文界面)

如果你对翻译的结果不满意,还可以进行修改。首先,进入目录,可以看到该目录中有很多 JSON 文件:打开 JSON 文件,找到要修改的内容,修改对应的Value值即可:最后,重启 ComfyUI 即可。

水滴的博客 1万+

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

装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式适应场合:装饰模式是为已有功能动态地添加更多功能的一种方式当系统需要新功能的时候,是向旧的类中添加新的代码。这些新加的代码通常装饰了原有类的核心职责或主要行为在主类中加入了新的字段,新的方法和新的逻辑,从而增加了主类的复杂度,而这些新加入的东西仅仅是为了满足一些只在某种特定情况下...

weixin_34304274的博客 154

用Python实现辅助病案首页主诊断编码:从数据清洗到模型上线(上)

本文介绍了一个使用Python构建AI辅助病案首页主诊断编码系统的完整指南。文章从环境搭建开始,详细讲解了数据准备与清洗策略,包括数据格式标准化、文本清洗与脱敏处理等关键步骤。系统采用深度学习技术处理复杂的医疗文本,解决ICD编码面临的文本复杂性、专业性和数据不一致性等挑战。文中提供了完整的代码实现,涵盖数据预处理、敏感信息脱敏、文本分割等实用功能模块,帮助医疗机构构建可落地、可扩展的智能编码系统,提高编码准确性和工作效率。

AllenLV的博客 925

设计模式-装饰者模式/Decorater Pattern(套娃模式)

设计模式-装饰者模式 参考资料:尚硅谷设计模式. 萌新码农 摘自网络资源 + 自己的思考 若有错误请大佬们指点 参考资料网上重复篇章多 忘了参考了哪几位博主的文章 若有侵权 请私信 看到会加上链接 设计模式-装饰者模式设计模式-装饰者模式角色需求类图说明IO实例 角色 抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。 具体构件(Concrete Component)角色:定义一个将要接收附加责任的类。 装饰(Decorator)角色:持有一个构件(Component

qq_34883222的博客 389

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【设计模式】用Java实现装饰模式

装饰模式(Decorator Pattern)是一种结构型设计模式它允许在不改变现有对象结构的情况下,动态地将责任附加到对象上。装饰模式通过将对象包装在装饰器对象中,形成一条装饰链,每个装饰器对象都可以在被装饰对象的行为前后加上自己的行为。装饰模式的核心思想是通过组合而不是继承来扩展对象的功能。它遵循开放-关闭原则,即对扩展开放,对修改关闭,使得我们可以在不修改现有代码的情况下,灵活地添加新的功能。应用场景:需要在不改变现有对象结构的情况下,动态地为对象添加额外的功能。

分享Java硬核干货 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

decorator java_使用Java中的annotations实现decorator设计模式

Decorator是一个经典的结构式设计模式,有着非常广泛的应用。在经典的Design Patterns:Elements of Reusable Object-Oriented Software中,它的用意被描述为:动态地为一个对象添加额外的责任与功能。对于扩展功能,装饰器提供了比子类化更加灵活的替代方案。在许多编程语言中,比如Python,在语法上就提供了装饰器的支持,能够透明地使用装饰器。而...

weixin_29338295的博客 224

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java设计模式——装饰模式

装饰(Decorator)模式是一种结构型设计模式,它允许在运行时动态地给一个对象添加新的职责或行为,而无需修改原有的类结构。装饰模式的核心思想是在不改变原有对象的基础上,通过组合的方式将新的职责附加到对象上。装饰模式用于动态地给一个对象增加一些额外的职责,就增加对象功 能来说,装饰模式比生成子类实现更为灵活。它是一种对象结构型模 式。装饰模式包含四个角色:抽象构件定义了对象的接口,可以给这些对 象动态增加职责(方法);

weixin_43841461的博客 1735

用三种方式装饰(Decorate)代码

摘要本文描述了Decorator模式的三种不同实现:继承、封装与外挂。深入讨论了每一种实现方式的优点与不足。原文链接:Three approaches for decorating your code 每一们读过GoF的那本著名的设计模式一书的人都会知道Decorator模式。现在,让我们暂时忘记所了解的Decorator概念,尝试着从我们的开发经验中去理解Decorator模式吧。Decorat

键者天行 7055

Java二十三种设计模式-装饰器模式(7/23)

装饰器模式是一种设计模式,允许用户在不修改对象自身的情况下,向一个对象添加新的功能。这种模式通过创建一个包装对象,也就是装饰器,来包裹实际对象,从而在不修改实际对象的基础上扩展其功能。装饰器模式提供了一种灵活的方式来扩展对象的功能,而无需改变对象的结构。通过本文的深入分析,希望读者能够对装饰器模式有更全面的理解,并在实际开发中做出合理的设计选择。

小相探索IT世界 1939

Java设计模式—装饰模式

装饰模式是一种比较常见的模式。 定义为:动态的给一个对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更加灵活。 装饰模式的通用类图如下: 装饰模式的构成: 1)抽象构件(Component):是一个接口或者是抽象类,就是定义我们最核心的对象,也就是原始的对象。 ******在装饰模式中必须有一个最基本,最核心,最原始的接口或者抽象类来充当Com...

weixin_34162228的博客 530

【设计模式】7、decorate 装饰模式

如果希望增强行为,可以使用 decorate 模式。且支持嵌套多层(套娃)

呆呆的猫的博客 907

Java 设计模式:装饰者模式(Decorator Pattern)

装饰者模式属于结构型设计模式,允许通过动态包装对象的方式为对象添加新功能,提供比继承更灵活的扩展方式。该模式通过组合替代继承,遵循开闭原则(对扩展开放,对修改关闭)。

2501_90825385的博客 1040

【设计模式】Java 设计模式之装饰者模式(Decorator)

装饰者模式是一种灵活的设计模式,允许在运行时动态改变对象行为。通过组合不同装饰者,可创建功能各异的对象,无需修改原有类。该模式具有扩展性好、高内聚低耦合和透明性等优点,但也可能产生较多小对象,增加设计复杂度。与继承相比,装饰者模式避免了静态继承和类爆炸问题;与代理模式相比,它更侧重于功能增强而非访问控制。装饰者模式适用于需要动态添加功能、保持接口稳定或避免高耦合的场景。虽然存在设计复杂度和内存开销问题,但其在软件开发中仍具重要作用。随着技术发展,期待装饰者模式有更多创新和应用。

新手村长的专栏 1945

Java设计模式 ---- 装饰模式

一、什么是装饰模式?        装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。 定义:动态地给一个对象增加一些额外的职责。就扩展功能而言,装饰模式提供了一种比使用子类更加灵活的替代方案。 二、装饰模式结构与实现 1、结构 (1)Component(抽象构件): 具体构件和抽象装饰类的共同父类。 (2)ConcreteComponent(具体构件)

qq_48651377的博客 4251

深入浅出设计模式(9)——Decorate模式

1、一个原则   类应该对扩展开放,对修改关闭   2、定义装饰者模式 装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。         1.      Component就是装饰器模式中公共方法的类,在装饰器模式结构图的顶层。 2.      ConcreateComponent是转换器模式中具体的被装饰的类,IO

Secret Island 1701

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

装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许用户通过在一个对象上动态地添加职责或行为来增强其功能。这种类型的设计模式属于对象结构型模式,在不需要改变一个对象的内部结构的条件下,给对象动态地增加一些额外的职责。装饰者模式相比生成子类更为灵活。

不如打代码 819
上一篇: java设计模式---享元模式
下一篇: java设计模式--原型模式(Prototype)
CodeForFreeX
博客等级 码龄12年 43粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值