装饰器模式的优点
- 装饰器模式与继承关系的目的都是要扩展对象的功能,但是装饰器模式可以提供比继承更多的灵活性。当需要扩展多个功能时,装饰器模式只需要增加新的具体装饰类即可,而继承关系则需要继承原有类,再进行扩展,如果需要在不改变原有类的基础上继续扩展,则需要再次继承,这样代码耦合性比较高。
- 可以通过一种动态的方式来扩展一个对象的功能,通过配置文件可以在运行时选择不同的装饰器,从而实现不同的行为。
- 通过使用不同的具体装饰器类以及这些装饰器类的排列组合,可以创建出很多不同的组合。可以使用多个具体装饰类来装饰同一个对象。
- 具体构建类与具体装饰类可以独立变化,用户可以根据需要增加新的具体构件类和具体装饰器类,在使用时再对其进行组合额,原有代码无线改变,符合“开闭原则”。