Java支持我们对一个对象进行克隆,通常用在装饰模式和原型模式中。那么什么是深克隆,什么是浅克隆呢。 【浅克隆】,通常只是对克隆的实例进行复制,但里面的其他子对象,都是共用的。 【深克隆】,克隆的时候会复制它的子对象的引用,里面所有的变量和子对象都是又额外拷贝了一份。 下面的两个例子可以很...
分类:
编程语言 时间:
2014-10-26 00:15:18
阅读次数:
293
1 装饰模式 2 概述 3 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 4 5 6 适用性 7 1.在不影响...
分类:
编程语言 时间:
2014-10-23 12:06:16
阅读次数:
198
节前把3个设计模式的学习心得分享了一下,分别是适配器模式,装饰模式,代理模式。
但是似乎越写越有些迷糊,这三种模式都有着一些大同小异的地方,总是有些搞不清。
今天再重新学习下,把学习心得分享给大家一下。这次是结合的我工作中的实际项目。...
分类:
编程语言 时间:
2014-10-14 13:08:18
阅读次数:
367
装饰模式:装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。 (一)装饰模式的特点: (1) 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。 (2) 装饰对象包含一个真实对象的引用(reference) (3) ...
分类:
其他好文 时间:
2014-10-13 16:44:09
阅读次数:
281
最近一直没有更新设计模式,一方面是因为国庆几天搬了几天家,没时间看书,另外一方面就是我对于实例之间的关系不怎么明白。昨天忽然对虚函数表有了兴趣,就研读了一下,然后再来看这个装饰模式,就理解这个模式是怎么运行起来的了。运用场景:1.在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通...
分类:
其他好文 时间:
2014-10-09 16:04:58
阅读次数:
202
看过好多对装饰模式的讲解,他们几乎都有一句相同的话:对现有类功能的扩展。不知道大家怎么理解这句话的,之前我把”对功能的扩展“理解成”加功能=加方法“,比如Person类本来有两个功能:Eat 和 Run ,使用装饰模式后,可以再加一个功能:Sleep,这显然是不能的。增加Sleep意味着修改接...
分类:
其他好文 时间:
2014-10-08 18:25:45
阅读次数:
243
1:背景介绍——小菜穿衣服 做法1: 定义Person类,依次调用方法 弊端:违背了开放——封闭的原则。 做法2: 定义Person类,定义服饰抽象类,具体类继承抽象类。 弊端:客户端调用重复代码太多,功能没分离开来,不方便添加新的功能。 客户端调用: 需要把所需要的功能按正确的顺序串联起来进行控制...
分类:
其他好文 时间:
2014-10-07 18:34:23
阅读次数:
164
?装饰模式又名包装(Wrapper)模式?装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案?装饰模式以对客户透明的方式动态的给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。?装饰模式可以在不创造更多子类的情况下,将对象的功能加以扩展。?装饰模式...
分类:
其他好文 时间:
2014-10-03 21:48:45
阅读次数:
162