设计模式:装饰者模式 详解

定义: 指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。

结构

装饰(Decorator)模式中的角色:

抽象构件(Component)角色 :定义一个抽象接口以规范准备接收附加责任的对象。

具体构件(Concrete Component)角色 :实现抽象构件,通过装饰角色为其添加一些职责。

抽象装饰(Decorator)角色 : 继承或实现抽象构件,并包含具体构件的实例,可以通过其子 类扩展具体构件的功能。

具体装饰(ConcreteDecorator)角色 :实现抽象装饰的相关方法,并给具体构件对象添加附 加的责任。

 

 

 

 

 

好处:

饰者模式可以带来比继承更加灵活性的扩展功能使用更加方便,可以通过组合不同的装饰者对象 来获取具有不同行为状态的多样化的结果。装饰者模式比继承更具良好的扩展性,完美的遵循开闭 原则,继承是静态的附加责任,装饰者则是动态的附加责任。

装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。 

5.3.4 使用场景

当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展和维护时

不能采用继承的情况主要有两类:

第一类是系统中存在大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目 呈爆炸性增长;

第二类是因为类定义不能继承(如final类)

在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。

当对象的功能要求可以动态地添加,也可以再动态地撤销时。

 

 小结: BufferedWriter使用装饰者模式对Writer子实现类进行了增强,添加了缓冲区,提高了写数 据的效率。

 


版权声明:本文为qq_43936583原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。