1. 装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式是为已有功能动态地添加更多功能的一种方式。<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/22203329/1645597059475-5eeb4ddd-60de-4d1b-bfec-9243effaf34a.png#clientId=u079caab0-32a5-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ua96d8a2e&margin=%5Bobject%20Object%5D&name=image.png&originHeight=623&originWidth=883&originalType=url&ratio=1&rotation=0&showTitle=false&size=333887&status=done&style=none&taskId=u1b8a4248-b68c-4c2e-82dc-f0418715ede&title=)<br /> 总结:当系统需要新功能的时候,是向旧的类中添加新的字段、方法、逻辑。这些新加的代码增加了主类的复杂度,而这些仅仅是为了满足一些只在某种特定情况下,才会执行的特殊行为的需要。而装饰模式却提供了一个非常好的解决方案,它把每个要装饰的功能放在单独类中,并让这个类包装它所要装饰的对象,因此,当需要执行特殊行为时,就可以在运行时根据需要有选择地、按顺序地使用装饰功能包装对象了。与建造者模式不同的是建造者模式要求建造的过程必须是稳定的,而装饰者是不稳定的。<br /> 优点:把类中装饰功能从类中搬移去除,这样补光可以简化原有的类,还有效地把类中的核心职责和装饰功能区分开了,而且可以去除相关类中重复的装饰逻辑。但装饰顺序很重要,最理想的情况就是保证装饰类之间彼此独立,这样他们就可以以任意的顺序进行组合了。