首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 设计模式(五)《装饰模式

装饰模式 装饰模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。...别名 Wrapper(包装) (适配器模式(Adapter Pattern)和装饰模式(Decorator Pattern)的统称) 意图 动态地给一个对象添加一些额外的职责。...就增加功能来说,装饰模式相比生成子类更为灵活。...(看完之后你会发现,装饰模式可以替代继承) 释义 小故事案例 有一只怪兽,它平时的时候赤手空拳,攻击力有10.如果要攻击力到20需要一把武器,现在我们不需要重新找一个有武器的怪兽,只需要给现在的怪兽增加...简单来说 装饰模式可以在装饰类中通过装饰,来动态的改变被装饰类的行为 维基百科这样说 在面向对象编程中,装饰模式是一种设计模式,它允许静态或动态地将行为添加到单个对象,而不影响来自同一类的其他对象的行为

44810

Java设计模式(六)装饰模式

在学装饰模式的时候,我想到了责任链模式中的级别这个概念,为什么这么说,在一个OA系统中我们会有不同级别(或者说权限范围不同)的管理员,首先我们要明确不同级别的管理员它也是管理员,我们那如何在管理员这个实体的基础上动态的去设置他们的权限范围呢...这就需要装饰模式了,而装饰模式也就是实现了这样一个功能(我的理解)。看一下概念: 装饰模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。...如上面的例子所说,我们如何使用装饰模式来实现这样的一个功能呢?...这就需要我们去写一个装饰了,他负责把权限装饰到这个现有的管理员身上。如何做这个装饰?...下面说一下这个模式的优缺点: 优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式装饰模式可以动态扩展一个实现类的功能。 缺点:多层装饰比较复杂。

40620
您找到你想要的搜索结果了吗?
是的
没有找到

Java设计模式(7)装饰模式

前言 在软件开发的世界里,设计模式如同一本精妙的编码诗集,已经成为一种标准的编程实践。在Java编程中,设计模式很重要。...本人将制作一个关于Java设计模式的系列文章,总共23种设计模式将以一篇一篇文章讲解,代码笔记已开源:Gitee点击跳转。在上一篇《Java设计模式(6)桥接模式》文章中,我们介绍了桥接模式。...本文是这个系列的第七篇章,我们将讲解一下装饰模式的实现方式、应用场景以及它的用途。 装饰模式 装饰模式是一种结构型设计模式,用于动态地为对象添加额外的行为或责任,而无需修改其原始类。...使用装饰模式可以避免创建大量的子类,而是通过组合不同的装饰来实现各种功能组合。 代码实现 这里采用绘图的例子来讲解一下此模式的代码实现。...比如 Java Swing 组件是一个经典的装饰模式的例子。它允许在运行时动态地向组件添加功能,如边框、背景、文本等等。

10710

Java设计模式装饰模式

这时候,装饰模式就派上了用场。装饰模式概述装饰模式是一种结构型设计模式。它允许行为在运行时动态地添加到对象,而不会影响其他对象的行为。...具体装饰(ConcreteDecorator): 扩展抽象装饰,添加额外的行为。案例实现为了更好地理解装饰模式的实现,我们将通过一个简单的例子来演示。...装饰模式的适用场景装饰模式在以下情况下特别适用:动态地为对象添加额外的功能: 当需要在不修改现有代码的情况下,动态地为对象添加新功能时,装饰模式是一种理想的选择。...保持类的封装性: 装饰模式可以保持类的封装性,避免直接修改类的代码,从而提高代码的可维护性和可复用性。装饰模式与继承的对比在许多情况下,装饰模式与继承都可以用于扩展类的功能。...装饰模式:优势: 装饰模式允许在运z行时动态地为对象添加新的行为,而不影响其他对象。通过组合不同的装饰,可以创建各种不同的对象组合。劣势: 可能需要引入许多小的类和接口,增加了代码的复杂性。

21610

Java 设计模式系列(10) —— 装饰模式

装饰模式 装饰模式的定义: 动态的给一个对象添加额外的职责,就功能来说,装饰模式相比子类更为灵活 装饰模式的四个角色: Componment 抽象构建角色:该角色用于规范需要装饰的对象 ConcreateComponment...装饰模式的简单示例 ?...componment); componment = new ConcreateDecorator(componment); componment.doingProcedureA(); } } 装饰模式的优点和使用范围...装饰模式的优点: 装饰类和被装饰类可以独立发展,而不会相互耦合 装饰模式是继承关系的一种替代方案 装饰模式可以动态的扩展一个实现类的功能 装饰模式的应用场景: 用于扩展一个类的功能,或者给一个类添加附加职责...动态的给一个对象天机功能,这些功能可以被动态的撤销 需要位一批的兄弟类进行改装或加装功能 装饰模式的缺点: 多层的装饰较为复杂

29210

重学 Java 设计模式:实战装饰模式

重学 Java 设计模式:实战装饰模式====================在日常的软件开发中,我们不可避免地需要对系统进行功能扩展。这时候,装饰模式就可以派上用场了。...本篇文章将介绍 Java 设计模式中的装饰模式,并通过一个实际的场景——扩展 SSO 单点登录功能,来展示如何使用装饰模式实现功能的扩展。什么是装饰模式?...装饰模式是一种常用的设计模式,它允许我们动态地给对象添加新的行为,而无需修改已有的代码。...这时候,装饰模式就可以帮助我们解决这个问题。装饰模式在 SSO 单点登录中的应用对于 SSO 单点登录中的权限控制需求,可以使用装饰模式来进行扩展。...总结--装饰模式是一种十分常用的设计模式,可以动态地给对象添加新的行为,而无需修改已有的代码。在 SSO 单点登录的场景中,装饰模式可以帮助我们在原有系统的基础上,添加新的行为和扩展。

14040

Java设计模式(七)Decorate装饰模式

),此时可应用装饰模式。...导出为Word版本、导出为Excel版本、存储到文件系统、存储到FTP服务上、邮件发送用户等可理解为报表工具的装饰。...服务。...图片.png 装饰的优点是动态的扩展了类功能(相比定义具体的类去实现接口),将装饰功能抽象为装饰类,减少了实现类的数量,降低了复杂度,也更符合对象的自然情况(个人认为区分装饰类与子类的方法是,装饰可以加也可以不加...装饰的缺点是由于装饰的层数可以不等,因此在排查问题等方面较复杂,好比一堵墙上添了N层墙纸、刷了N多涂料,现在墙上裂了缝到底是哪里出了问题就有点难排查了。

4.4K100

Java设计模式学习笔记—装饰模式

前言 目前设计模式学习主要基于菜鸟教程的设计模式,后期不排除会追加从其他地方学来内容。 文章最后“Java设计模式笔记示例代码整合”为本系列代码整合,所有代码均为个人手打并运行测试,不定期更新。...装饰模式 装饰模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。...这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 我们通过下面的实例来演示装饰模式的用法。...其中,我们将把一个形状装饰上不同的颜色,同时又不改变形状类。 资料卡片 基础资料卡 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。...优点 装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式装饰模式可以动态扩展一个实现类的功能。 缺点 多层装饰比较复杂。 使用场景 扩展一个类的功能。

61810

装饰模式

装饰模式 装饰模式Decorator Pattern允许向一个现有的对象添加新的功能,同时又不改变其结构,这种类型的设计模式属于结构型模式,是作为现有的类的一个包装。...关联机制,即将一个类的对象嵌入另一个对象中,由另一个对象来决定是否调用嵌入对象的行为以便扩展自己的行为,我们称这个嵌入的对象为装饰Decorator。...装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任,也就是说客户端并不会觉得对象在装饰前和装饰后有什么不同,装饰模式可以在不需要创造更多子类的情况下,将对象的功能加以扩展。...优点 装饰模式与继承关系的目的都是要扩展对象的功能,但是装饰模式可以提供比继承更多的灵活性。...可以通过一种动态的方式来扩展一个对象的功能,通过配置文件可以在运行时选择不同的装饰,从而实现不同的行为。 通过使用不同的具体装饰类以及这些装饰类的排列组合,可以创造出很多不同行为的组合。

54142

Java中的设计模式(三):装饰模式

琢磨了一会,突然灵光一闪,这玩意儿竟然可以用 装饰模式 实现。 二、基本概念 1....什么是装饰模式   装饰模式是一种 对象结构型模式 ,它通过一种无须定义子类的方式来给对象动态增加职责/功能,使用对象之间的关联关系取代类之间的继承关系。...那么在装饰模式中,这一弊病是否会得到缓解? 2.2 基于装饰模式的小鹏汽车系列   有了上面的概念,我们可以尝试使用装饰模式来实现一下小鹏汽车各种类型、各种配置的汽车。   ...浅析优劣 3.1 装饰模式的有点   作为设计模式中的一种,装饰模式可谓是将开闭原则诠释到了极致,极其灵活的实现了对象功能的扩展,而不会造成继承带来的子类个数爆炸的情况。...三、Java IO中的装饰模式   如此优秀的设计模式,JDK中也有对应使用,比如其中的IO类。

46350

Java设计模式系列】装饰模式(Decorator Pattern)

关联 将一个类的对象嵌入另一个对象,由另一个对象决定是否调用嵌入对象的行为以便扩展自身行为,这个嵌入的对象就叫做装饰(Decorator)。 定义 对象结构型模式。...动态地给一个对象增加额外功能,装饰模式比生成子类实现更为灵活。 装饰模式以对用户透明的方式动态给一个对象附加功能。用户不会觉得对象在装饰前、后有何不同。...装饰模式可在无需创造更多子类情况下,扩展对象的功能。...可通过动态方式扩展一个对象的功能,通过配置文件可以在运行时选择不同装饰,从而实现不同行为。...装饰模式可分为: 透明装饰模式 要求客户端完全针对抽象编程,装饰模式的透明性要求客户端程序不应该声明具体构件类型和具体装饰类型,而应该全部声明为抽象构件类型 半透明装饰模式 允许用户在客户端声明具体装饰者类型的对象

31220

Java设计模式系列】装饰模式(Decorator Pattern)

关联 将一个类的对象嵌入另一个对象,由另一个对象决定是否调用嵌入对象的行为以便扩展自身行为,这个嵌入的对象就叫做装饰(Decorator)。 定义 对象结构型模式。...动态地给一个对象增加额外功能,装饰模式比生成子类实现更为灵活。 装饰模式以对用户透明的方式动态给一个对象附加功能。用户不会觉得对象在装饰前、后有何不同。...装饰模式可在无需创造更多子类情况下,扩展对象的功能。...可通过动态方式扩展一个对象的功能,通过配置文件可以在运行时选择不同装饰,从而实现不同行为。...装饰模式可分为: 透明装饰模式 要求客户端完全针对抽象编程,装饰模式的透明性要求客户端程序不应该声明具体构件类型和具体装饰类型,而应该全部声明为抽象构件类型 半透明装饰模式 允许用户在客户端声明具体装饰者类型的对象

28220

Java常用设计模式--装饰模式(Decorator Pattern)

装饰模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。...就增加功能来说,装饰模式相比生成子类更为灵活。 在不修改原先对象核心的功能的情况下,对功能进行增强。...在装饰模式中的角色有: 抽象构件(Component)角色:给出一个抽象接口,已规范准备接收附加责任的对象。...举个例子: 比如奶茶店有很多奶茶,我去点一杯波霸奶茶,奶茶里面可以加各种配料,我需要在我的波霸奶茶里面加珍珠、椰果配料,这时候就可以使用装饰模式 分析一下: 奶茶属于抽象构件 波霸奶茶属于具体构件...配料属于装饰角色 珍珠、椰果属于具体装饰角色 上代码: 抽象构件(Component)角色:奶茶: package com.example.decorator; /** * 抽象构件:奶茶 */

1.9K20

设计模式-装饰模式

概念Wrapper装饰,又称Decorator,是继承关系的一种替代方案;顾名思义,封装一下,修饰一下目的:为对象增加不同侧面的特性装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能...之后所有继承装饰父类的子装饰,都是具体增加功能的实现。...优点装饰模式与继承关系的目的都是要扩展原有对象的功能,但是装饰模式比继承增加了更多的灵活性使用不同的具体装饰类以及这些装饰类的排列组合,可以创造出更多的不同行为的组合,原有的代码无需改变,符合“开闭”...原则装饰模式允许系统动态的决定贴上一个需要的装饰,或者除掉一个不需要的装饰。...缺点装饰模式添加了许多子类,过多使用会使程序变得很复杂增加了系统的复杂程度,加大了使用者的学习成本和理解难度JAVA IO中的装饰模式输入输出流架构图片装饰● 抽象构件(Component)角色:由

47300
领券