Java装饰模式

简介: Java装饰模式

Java装饰模式

装饰模式是一种结构型设计模式,它允许向现有对象添加新功能而不改变其结构。该模式通过创建包装器对象来实现,这些包装器对象包裹原始对象,并在其上添加新的功能。

知识点介绍:

在装饰者模式中,包含四种类,分别是抽象构件类、具体构件类、抽象装饰者类、具体装饰者类,它们各自负责完成特定任务,并且相互之间存在紧密联系。其中:

 

l 抽象构件(Component)角色:定义一个抽象接口准备接收附加责任的对象。

l 具体构件(Concrete Component)角色:实现抽象构件,通过装饰角色为其添加一些职责。

l 抽象装饰(Decorator)角色:继承或实现抽象构件,聚合抽象构件,通过子类扩展具体构件的功能。

l 具体装饰(ConcreteDecorator)角色:实现抽象装饰的相关方法,扩展具体构件的职责。

 

装饰者模式可以在不改变现有对象结构的情况下,动态地给该对象增加一些额外职责(功能),以透明动态的方式来动态扩展对象的功能,也是继承关系的一种代替方案。

1. 角色

· Component(组件):定义一个对象接口,可以动态地添加新的职责。

· ConcreteComponent(具体组件):实现了 Component 接口的具体对象,是被装饰的原始对象。

· Decorator(装饰器):持有一个 Component 对象的引用,并定义了与 Component 接口一致的接口,以便与 ConcreteComponent 协作。

· ConcreteDecorator(具体装饰器):实现了 Decorator 接口的具体装饰器,负责向组件添加新的职责。

2. 优点

· 可以动态地给对象添加新的职责,而不会影响其原有功能。

· 可以通过组合多个装饰器来实现不同的组合效果,更灵活。

3. 缺点

· 可能会产生过多的小对象,增加系统复杂度。

· 对于高层模块调用比较复杂。

代码示例:

1. 简单示例:咖啡加配料

image.png

2. Java IO 示例:BufferedInputStream

image.png

 

 

目录
相关文章
|
3月前
|
设计模式 Java 数据安全/隐私保护
Java装饰模式
Java装饰模式
40 3
|
3月前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~结构型] 扩展系统功能——装饰模式
[设计模式Java实现附plantuml源码~结构型] 扩展系统功能——装饰模式
|
10月前
|
设计模式 Java 数据库连接
JAVA设计模式8:装饰模式,动态地将责任附加到对象上,扩展对象的功能
JAVA设计模式8:装饰模式,动态地将责任附加到对象上,扩展对象的功能
|
11月前
|
Java 数据安全/隐私保护
Java 装饰模式讲解和代码示例
Java 装饰模式讲解和代码示例
68 0
|
12月前
|
设计模式 Java
|
设计模式 搜索推荐 Java
【设计模式】用Java实现装饰模式
装饰模式(Decorator Pattern)是一种结构型设计模式,它允许在不改变现有对象结构的情况下,动态地将责任附加到对象上。装饰模式通过将对象包装在装饰器对象中,形成一条装饰链,每个装饰器对象都可以在被装饰对象的行为前后加上自己的行为。
75 0
|
设计模式 Java
Java设计模式_装饰模式
Java设计模式_装饰模式
|
缓存
Java---设计模块(装饰模式)
Java---设计模块(装饰模式)
144 0
Java---设计模块(装饰模式)
|
设计模式 Java
Java设计模式——装饰模式(Decorator Pattern)
Java设计模式——装饰模式(Decorator Pattern)
192 0
Java设计模式——装饰模式(Decorator Pattern)
|
设计模式 Java
浅谈JAVA设计模式之——装饰模式(Decorator)
动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。
146 0
浅谈JAVA设计模式之——装饰模式(Decorator)