装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加 ...
分类:
其他好文 时间:
2016-09-06 12:14:43
阅读次数:
197
一、引言 在软件开发中,我们经常想要对一类对象添加不同的功能,例如要给手机添加贴膜,手机挂件,手机外壳等,如果此时利用继承来实现的话,就需要定义无数的类,如StickerPhone(贴膜是手机类)、AccessoriesPhone(挂件手机类)等,这样就会导致 ”子类爆炸“问题,为了解决这个问题,我 ...
分类:
其他好文 时间:
2016-09-01 23:06:12
阅读次数:
185
装饰者模式标签 : Java与设计模式
装饰者模式(Decorator): 又称包装器(Wrapper), 可以动态地为一个对象添加一些额外的职责. 就增加功能来说, 装饰者模式是一种用于替代继承...
分类:
其他好文 时间:
2016-08-29 20:47:19
阅读次数:
142
之前的装饰者模式,是将对象包装起来,赋予新的功能。适配器模式则是包装对象,使其接口看起来不像自己而是别的对象,就是将类的接口转换成想要的接口,以便实现不同的接口。而外观模式则是将对象包装起来以简化其接口。 适配器模式讲一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 ...
分类:
其他好文 时间:
2016-08-20 23:08:11
阅读次数:
196
对装饰者模式的简单理解: 作用:对一个对象原有的方法进行加强,修饰。 实现:装饰者和被装饰者必须实现相同的基类。 实例:java io中的相关类。比如Writer,Read,BufferWriter,bufferReader。 注意: 1.装饰者只是对被装饰者方法的加强,而不是新增方法。 2.装饰者 ...
分类:
其他好文 时间:
2016-08-19 18:57:31
阅读次数:
164
装饰模式使用被装饰类的一个子类的实例,把客户端的调用委派到被装饰类,装饰模式的关键在于这种扩展是完全透明的。 /** * 装饰器模式,(装饰者和被装饰者的类型必须是一样的,拥有相同的超类或者相同的接口) */ public abstract class Beverage { protected St ...
分类:
其他好文 时间:
2016-08-19 11:23:31
阅读次数:
162
装饰者模式概念 动态的给一个对象添加额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。 应用场景 1、当我们需要对一个已经开发好的对象动态的添加额外的功能的时候. 2、适应于某个对象的职责经常发生变化或者经常需要动态的增加职责,避免因为这种为了适应这样的变化,而增加继承子类扩展的方式,因为 这 ...
分类:
其他好文 时间:
2016-08-13 22:36:36
阅读次数:
162
定义:在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。概述:1.装饰者和被装饰对象有相同的超类型。2.你可以用一个或多个装饰者包装一个对象。3.既然装饰者和被装饰对象有相同的超类型,所以在任何需要原始对象(被包装的)的场合 ,可以用装饰过的对象代替它。4.装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的行为,以达到特定的...
分类:
编程语言 时间:
2016-08-11 01:02:40
阅读次数:
219
Io流里面的过滤流和节点流用的就是装饰者模式。整个的IO体系就是装饰模式。 这个写法就是装饰者模式。对上面的三个已经存在的类(DataOutputStream,BufferedOutputStream,FileOutputStream)进行组合,具有三种功能。 对于DataOutputStream ...
分类:
编程语言 时间:
2016-08-05 23:08:53
阅读次数:
483