设计模式——装饰模式
一、概念:装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
二:UML示意图
三、优缺点:
优点:
- 实现了装饰功能和对象核心功能的分离,降低了类的复杂度,遵守了单一职责原则
- 扩展新装饰(功能)只需要增加装饰类,遵守了开闭原则
- 通过使用不同的具体装饰类以及这些装饰类的排列组合,设计师可以创造出很多不同行为的组合。
缺点:
- 装饰模式会导致设计中出现许多小类,如果过度使用,会使程序变得很复杂。
- 这种比继承更加灵活机动的特性,也同时意味着更加多的复杂性。
- 装饰模式是针对抽象组件(Component)类型编程。但是,如果你要针对具体组件编程时,就应该重新思考你的应用架构,以及装饰者是否合适。当然也可以改变Component接口,增加新的公开的行为,实现“半透明”的装饰者模式。在实际项目中要做出最佳选择。