装饰者模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
(1)对扩展开放,对闭合修改。装饰者利用原对象的工能,只是增加了扩展
(2)就像下面的第三张图一样,最外层的装饰者会依次调用底层装饰者的方法,最终返回串行执行后的最终结果
(3)装饰者的目的就是在被装饰者的行为之前或者之后,加上自己的行为,以达到特定的目的
(4)装饰者与被装饰者具有相同的类型(通过接口或者继承实现)
(5)Java I/O中广泛应用了装饰者模式,例如FileInputStream是基础的被装饰的组件