设计模式7-装饰者模式
定义
在不改变原有对象的基础之上,将功能附加到对象上。提供了比继承更有弹性的替换方案。
一般拓展一个类,我们使用继承,但是继承会引入静态特征,并且随着扩展功能的增多,子类会膨胀。
实现
装饰类主要是思想,实现还是比较简单的。
就以接口来实现一个比较简单的。
1 | public interface IRunner{ |
这是一个runner接口,就是跑步者,目前只提供跑步功能。
1 | public class LiuXianng implement IRunner{ |
很明显,实现了这个类的
然后我们要对IRunner进行装饰了
1 | public abstract class ARunnerDecorator implemennt IRunner{ |
这样子就实现了一个装饰类了,这个类,既有irunner的功能(当然实现这个功能的不是它的核心作用),又可以外加一些新功能,比如说walk
1 | public class RunnerDecorator extends ARunnerDecorator{ |
后续想要使用walk的话,可以直接继承这个ARunnerDecorator
1 | public class demo{ |
优点
显而易见,解耦合。可以动态配置功能,也可以动态撤销
缺点
层级变深,还有分层,比较复杂