Python设计模式之装饰模式实例详解
程序员文章站
2023-12-02 18:03:52
本文实例讲述了python设计模式之装饰模式。分享给大家供大家参考,具体如下:
装饰模式(decorator pattern):动态的给一个对象添加一些额外的职责,就增加...
本文实例讲述了python设计模式之装饰模式。分享给大家供大家参考,具体如下:
装饰模式(decorator pattern):动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活.
下面是一个给人穿衣服的过程,使用装饰模式:
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'andy' """ 大话设计模式 设计模式——装饰模式 装饰模式(decorator pattern):动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活. 特点: 有效的把类的核心职责和装饰功能区分开,而且可以去除相关类中重复的装饰逻辑 """ # 定义对象接口 class person(object): def __init__(self,name): self.name = name def show(self): print "装扮的%s"%self.name #装饰类 class finery(person): def __init__(self): pass def decorate(self,componet): self.componet = componet def show(self): if self.componet != none: self.componet.show() #装扮——t恤 class tshirts(finery): def __init__(self): pass def show(self): print 't恤' self.componet.show() #装扮——大裤衩 class bigtrouser(finery): def __init__(self): pass def show(self): print '大裤衩' self.componet.show() # 装扮——人字拖 class flipflops(finery): def __init__(self): pass def show(self): print '人字拖' self.componet.show() if __name__ == '__main__': p = person('andy') ff = flipflops() bt = bigtrouser() ts = tshirts() ff.decorate(p) bt.decorate(ff) ts.decorate(bt) ts.show()
运行结果:
t恤
大裤衩
人字拖
装扮的andy
这几个类的设计如下图:
通过一个个继承自装饰类finery的对象,实现给person类赋予职责的功能,person类并不会感知finery的存在
更多关于python相关内容可查看本站专题:《python数据结构与算法教程》、《python socket编程技巧总结》、《python函数使用技巧总结》、《python字符串操作技巧汇总》及《python入门与进阶经典教程》
希望本文所述对大家python程序设计有所帮助。
上一篇: APP运营推广怎么做?这四点要先熟悉