zoukankan      html  css  js  c++  java
  • 设计模式_Decorator_装饰模式

    形象例子:

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

    装饰模式:

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

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

    UML结构图:


    抽象基类:
      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函数的动态调用.

  • 相关阅读:
    写给大数据开发初学者的话 | 附教程
    Mysql 到 Hbase 数据如何实时同步,强大的 Streamsets 告诉你
    如何学习大数据?阿里大数据开发师分享学习知识
    最简大数据Spark2.1.0
    从技术 Leader 的招聘需求看,如何转岗为当前紧缺的大数据相关人才?
    Redis内核原理及读写一致企业级架构深入剖析1综合组件环境实战
    为什么85%的大数据项目总是失败?
    js中的this关键字
    php百度api调用简单实例
    nginx常用命令
  • 原文地址:https://www.cnblogs.com/uestc999/p/3949869.html
Copyright © 2011-2022 走看看