设计模式:学习笔记(8)——装饰器模式
设计模式:学习笔记(8)——装饰器模式
快速开始
装饰者模式,是一种动态地向一个类中添加新的行为的设计模式。这非常像给该类创建子类,从而扩展功能。但是装饰者模式比生成子类更加灵活,他可以给某个对象添加功能而不是整个类。
它的原理是这样的,增加一个修饰类包裹原来的类,包裹的方式一般是通过将原来的对象作为修饰类的构造函数的参数,装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以直接调用原来的类中的方法。装饰类必须与原来的类有相同的接口。
模式分析
使用场景
Java基础类库中的输入输出流相关的类大量使用了装饰模式。
优缺点分析
装饰模式的主要优点在于可以提供比继承更多的灵活性,可以通过一种动态的方式来扩展一个对象的功能,并通过使用不同的具体装饰类以及这些装饰类的排列组合,可以创造出很多不同行为的组合,而且具体构件类与具体装饰类可以独立变化,用户可以根据需要增加新的具体构件类和具体装饰类;
其主要缺 点在于使用装饰模式进行系统设计时将产生很多小对象,而且装饰模式比继承更加易于出错,排错也很困难,对于多次装饰的对象,调试时寻找错误可能需要逐级排查,较为烦琐。