一、UML图
二、概念
装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。
三、说明
角色:
(1)Component是定义一个对象,可以给这些对象动态地添加职责。
(2)ConcreteComponent是定义了一个具体的对象,也可以给这个对象增加一些职责。
(3)Decorator,装饰抽象类,继承了Component,从外类来扩展...
分类:
编程语言 时间:
2014-12-11 15:48:56
阅读次数:
207
#include using namespace std;#define DESTROY_POINTER(ptr) if (ptr) { delete ptr; ptr = NULL; } class Product{public: virtual void Action()=0;};clas...
分类:
其他好文 时间:
2014-12-11 12:17:14
阅读次数:
177
python 在语法上对装饰模式进行了支持。
一、问题
有如下的一个函数,
def sum(x, y): print "x+y:", x+y
我们需要在每次调用 sum 函数的时候打印日志,但是我们并不希望修改sum函数。
二、解决方案
Solution 1:
最 brute-force 的方法,定义一个包裹函数, 在这个包裹函数的内部调用sum 函数(包裹函数和 ...
分类:
编程语言 时间:
2014-12-07 20:28:31
阅读次数:
288
最近看到
廖雪峰 的Python教程,对于学习Python的人来说,这可谓是一大福音,没有冗长的废话,只有最通俗易懂的语言,以及最清晰的解读。
下面是我对 装饰器 这一小节的总结, 以及自己的理解。
很多时候我会把Python的很多语法与C++相融合,在C++中,函数的名称即为函数的地址,我们可以通过定义"函数指针"变量,并且讲函数名称赋值给该变量,那么我们在调用函数的时候,就可以直接使用...
分类:
编程语言 时间:
2014-12-07 12:36:34
阅读次数:
240
好吧,基础打好,聊聊decorator,先看这段代码:def SayHi(name): return "How are you {0}, good morning".format(name)def decoator(func): def func_wrapper(name): ...
分类:
编程语言 时间:
2014-12-04 21:32:58
阅读次数:
294
一、装饰者模式1、定义及作用 该模式以对客户端透明的方式扩展对象的功能。2、涉及角色 抽象构件角色:定义一个抽象接口,来规范准备附加功能的类。 具体构件角色:将要被附加功能的类,实现抽象构件角色接口。 抽象装饰者角色:持有对具体构件角色的引用并定义与抽象构件角色一致的接口。 具体装饰角色:实现抽象装...
分类:
编程语言 时间:
2014-12-02 22:22:01
阅读次数:
282
在阎宏博士的《JAVA与模式》一书中开头是这样描述装饰(Decorator)模式的:
装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。
装饰模式的结构
装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加...
分类:
移动开发 时间:
2014-11-28 20:11:58
阅读次数:
389
/** * 装饰模式(Decorator Pattern) * * 概述: * 装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。 * 它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 * ...
分类:
其他好文 时间:
2014-11-28 00:54:06
阅读次数:
237
1:装饰模式:装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。是在不必改变原类文件和不使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对...
分类:
编程语言 时间:
2014-11-25 10:31:22
阅读次数:
195
MVC模式:它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。相互通信。MVC还使用了的设计模式,如:用来指定视图缺省控制器的Factory Method和用来增加视图滚动的Decorator。但是MVC的主要关系还是由Ob...
分类:
Web程序 时间:
2014-11-19 12:31:52
阅读次数:
107