(原)装饰模式
装饰模式的作用是动态的为对象添加一些额外的行为!其实我们可以理解为是类似继承功能的另一种实现方式,不过继承是静态的编译期间就确定,而装饰是动态的运行期间才确定。
那么如何实现装饰模式呢?首先我们需要清楚知道装饰模式有哪些核心元素。
装饰模式的元素有
原始接口:定义行为
默认实现类:继承原始接口,可以理解为最基本的接口实现
装饰类(可以是抽象的也可以是具体的):继承原始接口,同时聚合了一个默认实现类的对象,这样就即可使用默认实现类的行为也可以添加额外的行为
具体装饰类:继承装饰类,做再一步扩展,如果装饰类是抽象,则具体实现装饰类。
注意:在实际开发中很多业务场景中装饰类已经是具体的,而省略了具体装饰类
说到这里不知道大家理解为什么叫装饰模式了没,其实“装饰”是对于默认实现类而言,因为具体实现类的对象聚合默认实现类的对象,对默认实现类的行为进行了扩展。如何为默认实现类穿了衣服一样,装饰模式由此而来。
应用场景:
- 适合对默认实现类中的多个接口进行排列组合(默认实现类中聚合了其他接口,为实现不同的功能需要这些接口的不同组合)
- 适合对默认实现类惊醒选择性扩展
- 适合对默认实现类未知或者不易扩展的情况