1. 定义

      1. 装饰者(Decorator)模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。<br />**2.应用场景**<br />![](https://cdn.nlark.com/yuque/0/2021/png/2583083/1639837456564-b0e4d581-f3ac-4964-aa92-5f4baf1ac08a.png#crop=0&crop=0&crop=1&crop=1&from=url&id=jX7F0&margin=%5Bobject%20Object%5D&originHeight=113&originWidth=579&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)<br />**3.优点**<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/2583083/1639837590991-2c9878a7-45d6-49c8-b952-f9206a7536a4.png#clientId=u333ab36c-2264-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=145&id=u31571985&margin=%5Bobject%20Object%5D&name=image.png&originHeight=161&originWidth=627&originalType=binary&ratio=1&rotation=0&showTitle=false&size=92333&status=done&style=none&taskId=ue826569f-ff73-4d54-9510-571db2305eb&title=&width=566.5)

    4.类图
    image.png
    5.代码示例

    image.png
    image.png
    image.png

    1. jdk中文件流应用装饰者模式分析举例

    image.png
    BufferedInputStream及LineNumberInputStream都扩展自FilterInputStream,而FilterInputStream是一个抽象的装饰类。
    image.png
    image.png
    image.png

    但是Java I/O也引出装饰者模式的一个缺点:利用装饰者模式,常常造成设计中有大量的小类,数量实在太多,可能会造成使用此API程序员的困扰。

    [

    ](https://blog.csdn.net/u011863024/article/details/119843361)