zoukankan      html  css  js  c++  java
  • 大话设计模式之装饰者模式

    装饰者模式通过使用继承,能够将对象一层一层地包装起来。

    1,Person是被装饰的对象,装饰者模式的类图中,所有的类都继承自Person类。Person类有一个show方法,用来展示Person对象哪些服饰装饰了。通过继承,所有的类都有show方法,因此当人穿上了某种服饰之后,就可能调用该服饰的show方法展示出来。当没有任何服饰装饰人时,执行show方法就表示最初始的人。

    2,抽象的服饰类继承自Person类,尽管从自然概念上讲,服饰并不是人。但这里还是使用了继承。原因之一是,这样抽象的服饰类就有了show方法,从而使得各个具体的服饰类也有了show方法,当使用某个具体的服饰去装饰对象时,就可以使用该服饰的show方法展示了。

    3,尽管抽象的服饰类继承了Person类,但是它里面还有一个Person类的属性,这个属性就是用来给各个具体的服饰类去指明它要装饰哪个对象。由于该属性是Person类型的,因此A类服饰可以装饰B类服饰,B类服饰可以装饰C类服饰,……最终N类服饰装了Person对象(反过来看)。

    4,由于每个具体的服饰都从父类那里继承了show方法,因此在show方法里,每个具体的服饰都有一个带有个人特性的装饰,然后再调用父类的装饰(即所谓的一层一层包装起来)。

  • 相关阅读:
    POJ 1466 最大独立点集
    POJ 3159 差分约束
    POJ 3411 DFS
    POJ 2665 模拟,,
    POJ 3134 Power Calculus ID-DFS +剪枝
    POJ 1543 暴搜
    455. Assign Cookies
    715. Range Module
    530. Minimum Absolute Difference in BST
    493. Reverse Pairs(BST, BIT, MergeSort)
  • 原文地址:https://www.cnblogs.com/hapjin/p/4982471.html
Copyright © 2011-2022 走看看