软考总结——装饰模式

来源:互联网 发布:登陆传奇永恒网络异常 编辑:程序博客网 时间:2024/06/05 12:47

        软考终于结束了,在路上的时候,小伙伴们都特别的兴奋,倩倩说自己有点紧张,然后我就说没事,这次如果考过了那是最好的结果,如果考不过也是好事,因为软考涉及的东西太多了, 如果按复习效果来看,大家准备的都很充足,但是如果就学知识的程度而言,有很多知识点都有深入研究的必要,所以说如果再考一次,在深入的学习一遍,也是很好的经历,这是考试之前的感受。

        然而,开始是这么想的,考试完心里没底的时候,才知道内心真实的想法,还是一遍过的好呀。上午题很多知识点都复习到了,只有一些非常零碎的小知识点没有把握,下午题看卷子的时候,大致觉得中规中矩,可是做到设计模式的时候,就被灵活的题目整懵逼了,装饰模式当时觉得自己挺会的,但是真正有一些变化的时候,才发现自己的底子是那么的薄弱,代码量也不够,再加上考场上犯猛,导致最后一道拿分的大题有可能一分都拿不到。学习是个过程,永远没有尽头,既然发生了,就要好好总结自己的疏漏。如果有下一次的考试,一定要把这次不扎实的基础打扎实。

       这次就来总结一下这次软考涉及的设计模式——装饰模式

定义:动态给一个对象添加一些额外的职责。就添加功能来说,装饰模式相比生成子类更为灵活

适用性:

  1. 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责
  2. 处理那些可以撤销的职责
  3. 当不能采用生成子类的方法进行扩充时
参与者:
  1. Component抽象组件:定义一个对象接口,可以给这些对象动态的添加职责
  2. ConcreteComponent具体组件:定义一个对象,可以给这个对象添加一些职责
  3. Decorator装饰者:维持一个指向Component对象的指针,并定义一个与Component接口一致的接口
  4. ConcreteDecorator
类图



特点:
  1. 具体组件和装饰者都继承自抽象组件,并且装饰者持有抽象组件的引用
  2. 可以使用装饰者组合具体组件创造出新的类
  3. 过程2可以重复,知道创造出需要的类

在HeadFirst中,是以咖啡的例子来解释的装饰模式,UML图如下图所示




       上图中抽象组件式Coffee,具体组件是左边的两个类(脱咖啡因咖啡和浓缩咖啡),我们用Mocha和Whip来装饰这两种咖啡,我们的卷子上的装饰模式,是装饰一个发票,有发票头、内容、脚注三项去装饰发票。没有很好的做出这道题,有三个原因,第一:对super的理解不到位  第二:考场上遇到不会的比较慌张,没有很好的辨析出哪一个类是super类,第三:还是对这个模式理解的不深刻。

未完待续。。。










0 0
原创粉丝点击