设计模式之装饰者模式

装饰模式(Decorator)

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

动态地将责任附加到对象上,即不断地为对象添加装饰。

如下图所示:

Component:增加功能时的核心角色,被装饰的对象。

ConcreteComponent:实现了Component所定义的接口

Decorator(装饰物):具有与Component角色相同的接口。在它内部保存了被装饰的对象Component。

ConcreteDecorator(具体的装饰物):是Decorator的具体实现

接口(API)的透明性

    在Decorator模式中,装饰与被装饰物具有一致性,即装饰及其子类是被装饰物的子类。即使被装饰物被装饰起来,接口也不会被隐藏,其他类依然可以调用其方法。

在不改变被装饰物的前提下增加功能

    在Decorator模式中,越装饰,功能就越多,不对被装饰物进行任何修改。

只需要添加一些装饰物即可添加许多功能

在java.io包中就大部分使用了装饰者模式.

相关设计模式

Adapter模式

    Decorator模式可以再不改变被装饰物的接口的前提下,为被装饰物添加边框

    Adapter模式用于适配两个不同的接口

Strategy模式

    Decorator模式更侧重于动态增加功能(不用继承和修改原对象)

    Strategy模式更侧重于IOC实现解耦

 

百度百科:https://baike.baidu.com/item/装饰模式/10158540?fr=aladdin

借鉴博客: https://www.cnblogs.com/xinye/p/3910149.html

                    例子

借鉴书籍: 图解设计模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值