装饰模式
装饰模式是什么
动态地给对象添加一些额外的职责。就功能来说装饰模式相比生成子类更为灵活。
装饰模式的四种角色
抽象组件(Component)
一个抽象类,定义了“被装饰者”需要的进行的“装饰”的方法
具体组件(ConcreteComponent)
具体组件的实例被称为“被装饰者”
装饰(Decorator)
包含一个抽象组件用于声明的变量以保存“被装饰者”的引用
具体装饰(ConcreteDecotator)
具体装饰实例 称为装饰者
装饰模式的UML图
装饰模式的优缺点
装饰模式的优点
1被装饰者和装饰着是松耦合的关系
2装饰者模式满足开闭原则
3可以使用多个具体装饰者来装饰具体组件的实例
装饰模式的缺点
多层装饰比较复杂。
装饰模式的使用场景
在不影响其他对象的情况下,程序希望动态增强类的某个对象的 功能
当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展和维护时