一、概述
动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。装饰模式是一种用于替代继承的技术,使用对象之间的关联关系取代类之间的继承关系。在装饰模式中引入了装饰类,在装饰类中既可以调用待装饰的原有类的方法,还可以增加新的方法,以扩充原有类的功能。二、适用场景
装饰原有对象、在不改变原有对象的情况下扩展增强新功能/新特征.。当不能...
分类:
编程语言 时间:
2015-03-09 22:35:02
阅读次数:
221
要了解Hadoop的消息通信机制先得了解下java的动态代理这是一个装饰模式,用动态代理实现的,用静态工场生成被代理的具体实现类。这里是集合Set的代理。定义泛型方法时必须在前面加一个,来声明这是一个泛型方法,持有一个泛型T,然后才能用泛型T作为函数返回值。InvocationHandler接口是用...
分类:
其他好文 时间:
2015-03-09 19:02:35
阅读次数:
212
概述在软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能的增多”带来的子类膨胀...
分类:
Web程序 时间:
2015-03-07 15:39:22
阅读次数:
255
从现实入手
我早上起床,光着身子。这时我要穿衣服,先穿裤子再穿上衣。
我该怎么实现这个过程呢?
首先我是一个赤裸裸的人,并且我能被别人看到:class Person {
protected String name;
protected String body;
public void show(){
System.out.println("身体");...
分类:
其他好文 时间:
2015-03-06 22:17:32
阅读次数:
188
1.意图 动态地给一个对象添加一些额外的功能. 2.适用性 动态、透明的方式给单个对象添加职责。 如果不适合适用子类来进行扩展的时候,可以考虑适用装饰模式。 避免子类数目爆炸性增长。 3.结构 4.参与者 Component: 定义一个对象接口,可以给这些对象动态地添加职责. ConcreteCom...
分类:
其他好文 时间:
2015-03-04 22:41:45
阅读次数:
187
结构型设计模式
1、享元模式
2、外观模式
3、组合模式
4、桥梁模式
5、装饰模式
6、代理模式
7、适配器模式...
分类:
其他好文 时间:
2015-03-03 23:43:41
阅读次数:
171
在整理设计模式时发现代理模式和装饰器模式非常相似,所以找了篇文章来更好的理解下装饰器和代理模式的区别学习AOP时,教材上面都说使用的是动态代理,可是在印象中代理模式一直都是控制访问什么的,怎么又动态增加行为了,动态增加行为不是装饰器模式吗?于是 找了很多资料,想弄清楚这两者之间到底有什么区别。结果发...
分类:
其他好文 时间:
2015-03-02 18:16:28
阅读次数:
122
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下:Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下:[java]view plaincopypu...
分类:
编程语言 时间:
2015-03-02 18:10:34
阅读次数:
197
为期1月份的设计模式之旅已走完,我们今天一起来总结咱们前面的东西;其实设计模式分为:创建模式、结构模式、行为模式。它们分别是对应那些呢?
创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模...
分类:
其他好文 时间:
2015-02-27 11:59:09
阅读次数:
174
Decorator常被翻译成"装饰",我觉得翻译成"油漆工"更形象点,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee。这两种实体在Decorator模式中是必须的。Decorator定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆。使用Decorato...
分类:
编程语言 时间:
2015-02-19 09:37:50
阅读次数:
205