less than 1 minute read

背景:不必改变原类文件和使用继承的情况下,动态的扩展一个对象的的功能。 方案:利用子对象,委派

定义:

角色:

油漆工(decorator)是用来刷油漆的

被修饰者decoratee是被刷油漆的对象

实现:“实现被装饰者类—定义被装饰者对象—-使用被装饰者对象产生装饰者对象”(有多种方式)

案例:咖啡

特定场景下才用;

说明:

装饰者与被装饰者具有相同的类型

可以用多个装饰者装饰一个对象

由于装饰者与被装饰者具有相同的类型,我们可以用装饰后的对象代替原来的对象。

装饰者在委派它装饰的对象作某种处理时,可以添加上自己的行为(功能扩展)(在委派之前或/和之后)。

对象可以在任何时候被装饰,因此我们能在运行时动态的装饰对象。

Comments