定义:动态地给一个对象增加一些额外的职责。
角色:
- 抽象构件:Component
- 具体构件:ConcreteComponent
- 抽象装饰类:Decorator
- 具体装饰类:ConcreteDecorator
模式分析:
具体构件类和抽象构件类都实现了抽象构件接口,模式的关键在于抽象装饰类,这个类实现了抽象构件接口并且组合了抽象构件,在其构造函数中设置参数注入具体构件对象,在其装饰方法中调用这个注入的构件类已有的方法,再通过具体装饰类的继承,添加其他方法和功能。
核心理解
装饰模式做的事情是动态修改被装饰者的一些属性方法等等。
根据依赖倒转原则,待装饰的类和装饰者类都要实现自同一个抽象构件接口,在装饰者类的构造方法里要注入一个待装饰者对象,装饰者类和抽象构件接口是组合关系和接口实现关系,在装饰者类中提供一个可扩展的方法供子类重写。
具体的装饰者类继承抽象装饰者类,重写其扩展方法完成对待装饰对象的装饰!