Decorator Pattern,能够在不修改目标类也不使用继承的情况下,动态地扩展一个类的 功能。它是通过创建一个包装对象,也就是装饰者来达到增强目标类的目的的。 装饰者设计模式的实现有两个要求: 装饰者类与目标类要实现相同的接口,或继承自相同的抽象类。 装饰者类中要有目标类的引用作为成员变量,而具体的赋值一般通过带参构造器完成。 这两个要求的目的是,在装饰者类中的方法可以调用目标类的方法,以增强这个方法。 而增强的这个方法是通过重写的方式进行的增强,所以要求实现相同的接口或继承相同的抽 象类。 在装饰者设计模式中,装饰者类一般是不对目标类进行增强的。装饰者类作为一个基类, 具体的装饰者继承自这个基类,对目标类进行具体的、单功能的增强。这样做的好处是,在 很方便的情况下可以实现多重地、组合式地增强。 装饰者基类就像是一个装修公司的老板,其不做任何具体的装修工作。而具体的装饰者 则相当于装修公司中的木工、刷漆工、水电工等具体的装修师傅。装修公司的老板可以根据 具体的装修工程,任意组合式地调用不同工种的装修工人。