装饰者和被装饰者必须继承同一基类,因为装饰者必须能替代被装饰者,利用继承达到类型匹配而非获取行为。装饰者拥有一个与被装饰者相同的基类类型属性。可以用一个或多个装饰者包装同一对象。装饰者可以在被装饰者行为前后添加一些自己的行为。 应用实例:java.io