码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式_Decorator_装饰模式

时间:2014-09-01 21:00:43      阅读:365      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   ar   log   sp   on   

形象例子:

  Mary过完轮到Sarly过生日,还是不要叫她自己挑了,不然这个月伙食费肯定玩完,拿出我去年在华山顶上照的照片,在背面写上“最好的的礼物,就是爱你的Fita”,再到街上礼品店买了个像框(卖礼品的MM也很漂亮哦),再找隔壁搞美术设计的Mike设计了一个漂亮的盒子装起来……,我们都是Decorator,最终都在修饰我这个人呀,怎么样,看懂了吗?
bubuko.com,布布扣
装饰模式:

  装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。

作用:
  动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式相比生成子类更为灵活。

UML结构图:
bubuko.com,布布扣

抽象基类:
  1)Component:定义一个对象接口,可以为这个接口动态的添加职责.
  2)Decorator:维持一个指向Component的指针,并且有一个和Component一致的接口函数.

接口函数:
  1)Component::Operation:这个接口函数由Component声明,因此Component的派生类都需要实现,可以在这个接口函数的基础上给它动态添加职责.

解析:
  Decorator 的派生类可以为ConcreateComponent类的对象动态的添加职责,或者可以这么说:Decorator的派生类装饰 ConcreateComponent类的对象.具体是这么实现的,首先初始化一个ConcreateComponent类的对象(被装饰者),采用这个 对象去生成一个Decorator对象(装饰者),之后对Operation函数的调用则是对这个Decorator对象成员函数的多态调用.这里的实现 要点是Decorator类和ConcreateComponent类都继承自Component,从而两者的接口函数是一致的;其 次,Decorator维护了一个指向Component的指针,从而可以实现对Component::Operation函数的动态调用.

 

设计模式_Decorator_装饰模式

标签:style   blog   http   color   io   ar   log   sp   on   

原文地址:http://www.cnblogs.com/uestc999/p/3949869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!