🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 概述 亦称:装饰者模式、装饰器模式、Wrapper、Decorator **装饰**是一种概念设计模式,允许你通过将对象放入特殊封装对象中来为原对象增加新的行为。 ## 装饰模式结构 ![](https://img.kancloud.cn/09/99/099967eda34fe6ba2704291fe1ae937f_960x1040.png) 1. 部件 (Component) 声明封装器和被封装对象的公用接口。 2. 具体部件 (Concrete Component) 类是被封装对象所属的类。 它定义了基础行为, 但装饰类可以改变这些行为。 3. 基础装饰 (Base Decorator) 类拥有一个指向被封装对象的引用成员变量。 该变量的类型应当被声明为通用部件接口, 这样它就可以引用具体的部件和装饰。 装饰基类会将所有操作委派给被封装的对象。 4. 具体装饰类 (Concrete Decorators) 定义了可动态添加到部件的额外行为。 具体装饰类会重写装饰基类的方法, 并在调用父类方法之前或之后进行额外的行为。 5. 客户端 (Client) 可以使用多层装饰来封装部件, 只要它能使用通用接口与所有对象互动即可。 ## 适合应用场景 - 如果你希望在无需修改代码的情况下即可使用对象,且希望在运行时为对象新增额外的行为,可以使用装饰模式。 - 如果用继承来扩展对象行为的方案难以实现或者根本不可行, 你可以使用该模式。