DecoratorPattern- 装饰者模式
装饰者模式
装饰者模式(Decorator Pattern):是指在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案来扩展原有对象的功能,装饰者模式属于结构型模式。
示例:我们以生活中的蛋糕来举例说明。
蛋糕的抽象类
Cake.java
复制代码
原生蛋糕
BaseCake.java
复制代码
抽象装饰器
CakeDecorator.java
复制代码
芒果装饰器类
CakeAddMangoDecorator.java
复制代码
葡萄装饰器类
CakeAddGrapeDecorator.java
复制代码
测试
复制代码
可以看到,在使用装饰者模式之后,扩展之前的功能变得极为方便,可以根据现有的装饰器进行任意组合,而如果现有装饰器无法满足也可以新建装饰器来完成功能的扩展,依然十分方便。
装饰者模式使用场景
装饰者模式能将代理对象与真实被调用的目标对象分离,降低了系统的耦合度,所以扩展性比较好。
动态的给一个对象添加功能时非常方便,而且还支持随时撤销这些添加的功能。
装饰者模式优点
装饰者比继承更加灵活,可以在不改变原有对象的情况下动态地给一个对象扩展功能,即插即用。
通过使用不同装饰类以及这些装饰类的排列组合,可以实现不同效果。
新增装饰者模式时,只需要新增对应的装饰者类,无需修改源码,符合开闭原则。
装饰器模式缺点当装饰者非常多的时候,会引起类膨胀,使得系统更加复杂难以维护。
版权声明: 本文为 InfoQ 作者【梁歪歪 ♚】的原创文章。
原文链接:【http://xie.infoq.cn/article/07b1e070f9856fddc632fd39d】。文章转载请联系作者。
评论