在Java中,io包下的很多类就是典型的装饰者模式的体现,如:
new BufferedOutputStream(OutputStream out)
new BufferedInputStream(InputStream in);
new PrintWriter(OutputStream out)
new FilterReader(Reader in);
装饰类与...
分类:
编程语言 时间:
2014-10-09 03:21:57
阅读次数:
188
看过好多对装饰模式的讲解,他们几乎都有一句相同的话:对现有类功能的扩展。不知道大家怎么理解这句话的,之前我把”对功能的扩展“理解成”加功能=加方法“,比如Person类本来有两个功能:Eat 和 Run ,使用装饰模式后,可以再加一个功能:Sleep,这显然是不能的。增加Sleep意味着修改接...
分类:
其他好文 时间:
2014-10-08 18:25:45
阅读次数:
243
1:背景介绍——小菜穿衣服 做法1: 定义Person类,依次调用方法 弊端:违背了开放——封闭的原则。 做法2: 定义Person类,定义服饰抽象类,具体类继承抽象类。 弊端:客户端调用重复代码太多,功能没分离开来,不方便添加新的功能。 客户端调用: 需要把所需要的功能按正确的顺序串联起来进行控制...
分类:
其他好文 时间:
2014-10-07 18:34:23
阅读次数:
164
装饰者(Decorator)模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更具有弹性的替代方案。对于装饰者模式,它其实是一种包装,所以我更愿意称它为一种包装。像咱们以前经常使用的Java里面的IO流就用到了装饰着模式。比如:BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file1)));这里file1为目标对象,而像BufferedReader、InputStreamRead...
分类:
编程语言 时间:
2014-10-04 01:18:45
阅读次数:
400
?装饰模式又名包装(Wrapper)模式?装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案?装饰模式以对客户透明的方式动态的给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。?装饰模式可以在不创造更多子类的情况下,将对象的功能加以扩展。?装饰模式...
分类:
其他好文 时间:
2014-10-03 21:48:45
阅读次数:
162
写这篇随笔是因为今天自己在写插件和过滤方法的过程中碰壁了,折腾了好久终于稍微发现些问题,在此记下,以作备忘。在看了xadmin的插件机制后,笔者也想使用该思想来扩展kadmin中视图的方法。例如,在一个登陆视图中,一般的逻辑如下:class LoginView(BaseAdminView): ...
分类:
编程语言 时间:
2014-10-02 18:33:53
阅读次数:
300
在阎宏博士的《JAVA与模式》一书中开头是这样描述装饰(Decorator)模式的: 装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式的结构(使用组合) 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户.....
分类:
其他好文 时间:
2014-09-29 22:42:32
阅读次数:
231
装饰设计模式:当需要对某些类功能进行增强时,可以把这个类的对象传到自定义类中,然后利用此对象具备的方法在此基础之上进行功能的增强。与继承的区别:扩展性强一些代码举例:import java.io.*;class MyBufferedReader{ private FileReader file...
分类:
其他好文 时间:
2014-09-29 12:32:27
阅读次数:
145
相对于适配器模式,或者说装饰器模式,代理模式理解起来更加简单。
代理这个词应该比较好理解,代替去做就是代理。
比如,我们买卖房子,那么我们会找中介,我要卖房子,但是我们没有时间去卖,我主动交给中介,中介会帮我发布,会帮我找买家,带买家看房,最后我只要收到钱就行了。
买家的目的:卖房拿钱。。卖加最终的目的就是把房子换成钱。...
分类:
编程语言 时间:
2014-09-28 16:33:43
阅读次数:
312