浅谈装饰者模式

一、核心点

1.运行时扩展 要远比 编译时继承 威力大

2.将父类的功能抽象成接口,子类 extends 父类并 implements 功能接口

3.类应对扩展开放,对修改关闭

4.用装饰过的对象代替原有的对象

5.继承有两个作用:继承行为+类型匹配

6.继承是父类的功能传给子类

7.组合:获得的新行为并非是继承【编译】得来,而是由组合对象得来的【运行时才获得】。

二、概念

     装饰者模式动态地将责任附加到对象身上。若要扩展功能,装饰者提供了比继承更加有弹性的替代方案。

     装饰者和被装饰者必须是同样的类型【extends】

三、框架

被装饰的抽象组件(Component):父类

继承自抽象组件的具体组件(ConcreteComponent):子类

继承自抽象组件的抽象装饰者(Decorator):装饰父类的抽象类,每个Decorator都 “有一个” Component

具体装饰者(ConcreteDecorator):extends抽象装饰者

四、装饰者模式的缺点

     1. 会在设计中加入大量的小类

     2.有些代码依赖特定的类型,不可以导入装饰者模式

     3. 使用装饰者模式时,实例化组件,有可能实例化很多组件

五、现实中的例子

     java I/O

    浅谈装饰者模式