看了几集毛骗( 不是毛片 是毛骗) 就11点了..
给爱用继承的人一个全新的设计眼界. 在不修改现有代码的情况下.扩展行为.
>. 装饰者和被装饰者对象有相同的超类型.
>. 你可以用一个或多个装饰者包装一个对象.
>. 既然装饰者和被装饰者对象有着相同的超类型,所以在任何需要原始对象(被包装)的场合,可以用装饰过的对象代替它.
>.(关键点)装饰者可以在所委托被装饰...
分类:
其他好文 时间:
2014-05-15 05:51:26
阅读次数:
217
装饰模式(Decorater)动态的给一个对象添加一些额外的职责。
就增加功能来说,装饰模式比生成子类更加灵活。装饰模式中有几个关键的地方:①装饰模式依赖于【装饰者】类中有一个父类对象(指针),
而装饰函数(或方法)用来此父类对象(指针)设置实际的动态类型。②因为是要给某个对象增加职责,所以很明显的...
分类:
其他好文 时间:
2014-05-14 12:03:06
阅读次数:
297
首先来看一个例子:比如,饮料可以分为很多种类,而这里我取一个咖啡,那么这个咖啡呢,有多种形式的,比如有加糖了的咖啡,有加奶的咖啡,也有加热了的咖啡,也有加了冰块的咖啡。而各个顾客的选择却是不同的,比如,有的客户是要加糖的咖啡,而有的客户却是要加冰的咖啡,也就是需求是各种各样的,那么如何实现这种情况呢...
分类:
其他好文 时间:
2014-05-12 13:32:33
阅读次数:
297
解决的问题是:我有一个类A,里面可能需要很多不同行为的功能。
现在有三种解决方法,第一种:每个功能都弄成一个类,然后继承类A,这种的问题是,如果功能很多,会造成类爆炸。
第二种:我将功能类组合上类A上,这种想法是好的,但还没够弹性,因为这样我没法在不修改类A的情况下对功能的动态添删。(我的目的就是在不修改类A的情况下,对类A进行功能扩展)
第三种:就是我要说的装饰者模...
分类:
其他好文 时间:
2014-05-11 21:26:18
阅读次数:
340
本系列记录个人在“设计模式”上的学习,文中错误之处,恳请读者指正。装饰者模式:动态地将责任附加到对象上。如要扩展功能,装饰者提供了比继承更有弹性的替代方案。设计原则:好的代码设计应该免于修改,又易于扩展。
扩展和修改实际上并不矛盾,扩展的是功能,修改的是代码,而功能的增加不一定要通过修改原来的代码....
分类:
其他好文 时间:
2014-05-11 13:34:39
阅读次数:
306
1、策略模式
主体主要是添加一个算法的基类,这样就可以通过创建不同的派生类算法,来达到运行时动态改变行为。
2、观察者模式
观察者 关键是要继承统一的监听接口。
通知者 主要是实现:观察者list、添加观察者、删除观察者、通知观察者等接口。
可分为:推送观察者模式,拉取观察者模式。
3、装饰模式
主要是通过装饰品替换装饰者来改变装饰者的行为。因此,装饰品要与装饰者有相...
分类:
其他好文 时间:
2014-05-09 09:10:18
阅读次数:
264
前言
装饰者模式在餐饮行业有着比较广泛的应用,网上大部分关于该模式的例子都和饮食相关,以前看译制片电影,每当看到老外们在咖啡店一口流利的点咖啡要加糖要加奶昔要加这加那的时候,感觉好有派~好高大上啊~,为啥我在小卖部都是“来瓶汽水”就没话说了呢~,难道是我不会“装”?
官方定义
动态的给一个对象添加一些职责,就增加功能来说,该模式比生成子类更为灵活——GOF...
分类:
其他好文 时间:
2014-05-09 00:28:37
阅读次数:
410
实现一个类似QQavator功能的代码1、原始实现 1 //存在的问题: 2
//1、wear*方法出现重复代码,可以重构;实质上为代码结构一致,输出内容相同,可以通过在定义一个基类,在基类中定义抽象的Wear*,在子类中重写; 3
//2、倘若需求中新增某种服饰,需要修改Pers...
分类:
其他好文 时间:
2014-05-05 09:39:47
阅读次数:
315
代理模式与装饰器模式的区别,主要大于,从使用者(客户端)的角度来看的://装饰器的客户public class Client{ public static
void main(String[] args){ //客户指定了装饰者需要装饰的是哪一个类 ...
分类:
其他好文 时间:
2014-05-01 18:47:25
阅读次数:
354
单例模式(Singleton)
工厂模式(Factory)
桥接模式(Bridge)
组合模式(Composite)
门面模式(Facade)
适配器模式(Adapter)
装饰者模式(Decorator)
享元模式(Flyweight)
代理模式(Proxy)
观察者模式(Observer)
命令模式(Command)
1.单例模式(Singleton):
Singl...
分类:
编程语言 时间:
2014-04-29 13:34:20
阅读次数:
344