装饰者模式:动态地给一个对象添加一些额外的职责,就增加功能来说,Decorator模式比生成子类更为灵活。 Decorator模式的工作原理是:可以创建始于Decorator对象(负责新的功能的对象)终于原对象的一个对象“链”。适用性在以下情况下可以使用 Decorator 模式:在不影响其他对象....
分类:
其他好文 时间:
2014-07-22 22:58:12
阅读次数:
241
装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。具体被装饰者和抽象装饰类都继承于抽象被装饰者类,继承的是类型,而不是行为。行为来自装饰者和基础组件,或与其他装饰者之间的组合关系。装饰模式的角色 抽象构件角色(Component):给出一个抽象接口,以规范准备....
分类:
编程语言 时间:
2014-06-28 18:21:50
阅读次数:
340
装饰者模式是动态的将责任附加到另一个对象上,由这个对象负责;这个装饰与被装饰的组件接口一致,因此对使用该组件的客户透明;其中的关键点是装饰者可以在所委托被装饰者的行为之前和之后,加上自己的行为,已达到特点的目的。
代码如下:
-------------Component
//装饰者模式一般使用抽象类
public abstract class Beverage
{...
分类:
其他好文 时间:
2014-06-27 09:09:56
阅读次数:
269
类应该对扩展开放, 对修改关闭.所谓装饰者模式,
是指用其他的类来装饰某个类,装饰者说白了就是使用 has-a 来代替 is-a隐喻咖啡店, 有很多种咖啡, 咖啡里还要增加一些 milk, 面包片啊, 等等.
针对加的东西不同, 计算出来的费用不同, 那么我们需要怎么做呢?1. 首先创建一个 cof...
分类:
其他好文 时间:
2014-06-11 13:03:28
阅读次数:
349
装饰者模式是很有意思的一种设计模式,你将能够在不修改任何底层代码的情况下,给你的(或别人的)对象赋予新的职责。不是使用继承每回在编译时超类上修改代码,而是利用组合(composition)和委托(delegation)可以在运行时具有继承行为的效果。
代码应该如同晚霞中的莲花一样地关闭(免于改变),如同晨曦中的莲花一样地开放(能够扩展)。
这就是,设计原则之五:类应该对扩展开放,对...
分类:
编程语言 时间:
2014-06-08 17:35:12
阅读次数:
252
模式定义:
装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
装饰者和被装饰者有相同的超累类型。
可以用一个或多个装饰者包装一个对象。
既然装饰者和被装饰者对象有相同的超累类型,所以在任何需要原始对象(被包装的)的场合,可以用装饰过的对象代替它。
装饰者可以委托被装饰者...
分类:
编程语言 时间:
2014-06-08 09:49:38
阅读次数:
248
1 设计一个基类
2 继承这个基类,并包含这个基类的一个对象
3 创建继承类的时候,初始化这个基类,因为是基类指针,所以可以是所有基类的衍生类对象,那么就可以叠加任意多个衍生类对象了。
关键是在衍生类中包含一个基类对象,然后有了继承和包含两重关系,可以使得一个类一个类对象叠加,达到装饰目的。
等于是创建了一个对象指针链表,一个一个对象发挥其相应的作用。
下面程序装饰一个桌...
分类:
其他好文 时间:
2014-06-05 06:15:17
阅读次数:
278
装饰者模式是JDK中另一个使用较多的设计模式,上一个是观察者模式(在Swing中大量使用),业内好的API设计无一离不开常见的设计模式,通常我们所说要阅读源码,也是为了学习大牛们的设计思路。————题记
设计模式
观察者模式:定义了对象之间一对多的依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会受到通知并自动更新。
装饰者模式:动态地将责任附加到对象上。若要扩展功能,装饰者提...
分类:
其他好文 时间:
2014-06-02 05:31:47
阅读次数:
234