装饰模式(Decorator)
装饰模式指的是: 在不必改变原文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是用装饰i来包裹真实的对象。
动态地将责任附加到对象上,即不断地为对象添加装饰。
如下图所示:
Component:增加功能时的核心角色,被装饰的对象。
ConcreteComponent:实现了Component所定义的接口
Decorator(装饰物):具有与Component角色相同的接口。在它内部保存了被装饰的对象Component。
ConcreteDecorator(具体的装饰物):是Decorator的具体实现
接口(API)的透明性
在Decorator模式中,装饰与被装饰物具有一致性,即装饰及其子类是被装饰物的子类。即使被装饰物被装饰起来,接口也不会被隐藏,其他类依然可以调用其方法。
在不改变被装饰物的前提下增加功能
在Decorator模式中,越装饰,功能就越多,不对被装饰物进行任何修改。
只需要添加一些装饰物即可添加许多功能
在java.io包中就大部分使用了装饰者模式.
相关设计模式
Adapter模式
Decorator模式可以再不改变被装饰物的接口的前提下,为被装饰物添加边框
Adapter模式用于适配两个不同的接口
Decorator模式更侧重于动态增加功能(不用继承和修改原对象)
Strategy模式更侧重于IOC实现解耦
百度百科:https://baike.baidu.com/item/装饰模式/10158540?fr=aladdin
借鉴博客: https://www.cnblogs.com/xinye/p/3910149.html
借鉴书籍: 图解设计模式