装饰模式(Decorator Pattern、Wrapper Pattern,对象结构型模式)

装饰模式是一种用于给对象添加额外职责的设计模式,它提供了比继承更灵活的方式来扩展对象功能。通过维持Component对象的指针,Decorator可以在不改变原有对象接口的前提下,透明地添加新行为。适用于需要动态增减职责、避免高层类过于复杂等情况。Decorator模式与Adapter、Composite、Strategy模式等有明显区别,如Adapter改变接口,Composite关注对象组合,Strategy改变对象内核。
摘要由CSDN通过智能技术生成

意图

动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更加灵活。
对装饰和内容一视同仁。
Decorator是“进行Decorate(装饰)的主体”的意思。

适用性

当需要给一个类添加新的行为的时候,但基于开闭原则,就使用装饰模式。
在以下情况使用Decorator模式:
1. 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责
2. 处理那些可以撤销的职责
3. 当不能采用生成之类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或者类定义不能生成之类。

结构

这里写图片描述

参与者

Component

定义一个对象接口,可以给这些对象动态增加职责。

ConcreteComponent

定义一个对象,可以给这个对象增加一些职责

Decorator

维持一个指向Component对象的指针,并定义一个与Component接口一致的接口(可以直接实现Component接口)。

ConcreteDecorator

向组件添加职责

Client

使用组合完成功能的扩展。

代码

Component

public interface Component {
   
    public void defaultMethod();
}

ConcreteComponent

public class ConcreteComponent implements Component{
   
    public void defaultMethod(){
        System.out.println("====ConcreteComponent===defaultMethod===");
    }
}

Decorator

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值