1.装饰者模式是在不必改变原类文件和使用继承关系的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。2.装饰模式的特点:1)装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。2)装饰对象包..
分类:
其他好文 时间:
2014-12-07 23:24:52
阅读次数:
235
装饰者模式 在OO设计和开发过程,当我们需要为一个已经定义好的类添加新的职责(操作),通常情况下我们会采用继承的方式定义好自己的类,但是采取这样的方式会带来一些问题。 为了多态,通过父类指针指向其具体子类,但是这会造成另一问题:当我们需要为子类添加新的职责,就必须向其父类添加一个这个功能的抽象接口....
分类:
其他好文 时间:
2014-12-07 21:40:06
阅读次数:
251
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
http://www.cnblogs.com/huxi/archive/2011/03/01/1967600.html 很不错的一篇文章http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html1. 装饰器入门1.1. 需求是怎么来的?装...
分类:
编程语言 时间:
2014-12-05 17:01:59
阅读次数:
276
1、是比自行车简单,但你自己骑一骑试试?
2、都简单,但各自有独一无二的特征
3、专家想要的功能往往会吓倒主流用户
4、简单可不是这种能够粘在用户界面上的装饰
5、软件使用环境是观察用户的最佳地点
6、在家里、在公司、在户外,你的设计必须能够适应各种干扰。
7、想要吸引大众必须要关注主流
8、主流用户从不愿动手从头组装
9、史蒂夫.乔布斯
10...
分类:
其他好文 时间:
2014-12-04 18:04:09
阅读次数:
120
1、问题问题:想要添加日志记录、性能监控、安全监测2、最初解决方案2.1、最初解决方案缺点:太多重复代码,且紧耦合2.2、抽象类进行共性设计,子类进行个性设计,此处不讲解,缺点一荣俱荣,一损俱损2.3、使用装饰器模式/代理模式改进的解决方案装饰器模式:动态地给一个对象添加一些额外的职责。就增加功能来...
分类:
编程语言 时间:
2014-12-03 09:15:28
阅读次数:
218
1.1 定义 动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。1.2 类图1.3 代码 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using Syste...
分类:
其他好文 时间:
2014-12-03 00:21:33
阅读次数:
173
一、装饰者模式1、定义及作用 该模式以对客户端透明的方式扩展对象的功能。2、涉及角色 抽象构件角色:定义一个抽象接口,来规范准备附加功能的类。 具体构件角色:将要被附加功能的类,实现抽象构件角色接口。 抽象装饰者角色:持有对具体构件角色的引用并定义与抽象构件角色一致的接口。 具体装饰角色:实现抽象装...
分类:
编程语言 时间:
2014-12-02 22:22:01
阅读次数:
282