重点:
1、动态扩展对象,替换之前需要继承才能实现的功能。
2、具体工作的,仍然是被包装的对象,(有点锦上添花的意思,顾名思义仅仅起到装饰的作用,主体不变)。
对比继承:
1、减少类的数量。
如果使用继承的方式,每一个对应的类,都需要有相应的子类,才能完成对应的功能。
如果使用装饰者模式,同一个接口下的所有类(具体的实现类),都可以共用一个装饰者。
因此减少了类的数量。