装饰者的概念:
装饰者就像益禾堂的一杯奶茶,你可以给它增加种调料,如芒果,红豆,蜂蜜冻. . . ,
装饰者对于这杯奶茶的看法是,本质是奶茶,加了红豆也是奶茶,虽然我不知道奶茶里有什么,但不妨碍我为其增加调料,就像俄罗斯套娃一样。
对于基类来说,子类的继承可以增加新的功能,但这些功能在静态编译时就已经确定。在策略模式中我们通过组合和委托动态的改变了类的功能。装饰者模式可以实现为对象动态的增加职责,只要多套层装饰。
装饰者模式具有的一些特征
1,装饰者(decorator)和被装饰(扩展)的对象有着相同的超类(supertype)。
2,我们可以用多个装饰者去装饰一个对象。
3,我们可以用装饰过的对象替换代码中的原对象,而不会出问题(因为他们有相同的超类)。
4,装饰者可以在委托(delegate,即调用被装饰的类的成员完成一些工作)被装饰者的行为完成之前或之后加上他自己的行为。
5,一个对象能在任何时候被装饰,甚至是运行时。