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方法里,每个具体的服饰都有一个带有个人特性的装饰,然后再调用父类的装饰(即所谓的一层一层包装起来)。

  • 相关阅读:
    文件传输, socketserver模块
    模拟ssh, hashlib模块, struct模块, subprocess模块
    面向对象多继承, 网络基础, 编写网络相关的程序
    主动调用其他类的成员, 特殊成员
    约束, 自定义异常, hashlib, logging
    isinstance / issubclass / type, 方法和函数, 反射
    类的成员和嵌套(建模)
    面向对象
    模块和包
    异常处理
  • 原文地址:https://www.cnblogs.com/hapjin/p/4982471.html
Copyright © 2011-2022 走看看