当我们错误的使用继承来进行功能扩展时,在需求不断变更的同时可能会增加很多子类,且缺乏灵活性,那么这个时候我们可以考虑使用装饰器模式进行重构。
举个栗子:我们需要做一个画图的接口
那么我们如果直接修改原来的子类实现,显然是不合适的,颜色有很多种,那么就会加入很多不同的子类【比如“红色圆形”,“绿色长方形”,“黄色长方形”等等....】,且这也违背了我们面向对象的开闭原则。






解析:动态(组合)地给一个相对稳定的主体去增加一些拓展功能。【运行时动态拓展】
目的:就拓展功能而言,使用装饰器模式比使用继承方式拓展更为灵活。(1、消除重复代码 2、有效减少子类个数)
特征:
原文:https://www.cnblogs.com/riches/p/14431558.html