设计模式之python版(三)--装饰模式
来源:互联网 发布:淘宝如何设置自动回复 编辑:程序博客网 时间:2024/05/16 18:43
装饰模式:
应用特点:是动态的给主功能添加一些装饰性的功能。
结构特性:就是把各装饰性的功能和主功能分开,然后根据需要选择装饰性的功能来修饰主功能即可。
UML:
#!/usr/bin/env python #encoding: utf-8 ##被装饰的主类class baseclass: def __init__(self): pass def set_compent(self): pass def pack_something(self): print 'All packed me!' ##连接特性类与主类的中间层类class packclass(baseclass): def __init__(self): pass def set_compent(self,compent): if None != compent: self.compent = compent def pack_something(self): self.compent.pack_something() ##修饰主类的特性类class newclass1(packclass): def __init__(self): pass def pack_something(self): print 'something1' packclass.pack_something(self)##修饰主类的特性类 class newclass2(packclass): def __init__(self): pass def pack_something(self, ): print 'something2' packclass.pack_something(self)##修饰主类的特性类 class newclass3(packclass): def __init__(self): pass def pack_something(self): print 'something3' packclass.pack_something(self) if '__main__' == __name__: mainobj = baseclass() class1_obj = newclass1() class2_obj = newclass2() class3_obj = newclass3() print mainobj.__class__ print class1_obj.__class__ print class2_obj.__class__ print class3_obj.__class__ class1_obj.set_compent(mainobj) class2_obj.set_compent(class1_obj) class3_obj.set_compent(class2_obj) class3_obj.pack_something()
结果:
__main__.baseclass__main__.newclass1__main__.newclass2__main__.newclass3something3something2something1All packed mine!
- 设计模式之python版(三)--装饰模式
- Java设计模式(三)之装饰设计模式
- 设计模式之(三、装饰模式Decorator)
- 设计模式之三:装饰器模式
- 设计模式三之装饰者模式
- 设计模式之三:装饰模式(Decorator)
- 设计模式之三装饰模式
- 设计模式三之装饰者模式
- 三、大话设计模式 之 装饰模式
- 设计模式之装饰者模式 三
- python设计模式之装饰器模式
- 8、python设计模式之装饰模式
- python设计模式之装饰器模式
- 设计模式(三)装饰者模式之java.io
- 设计模式学习(三)之装饰者模式
- 设计模式学习(三)---------装饰模式
- Java设计模式(三) 装饰模式
- 设计模式(三):装饰模式
- KPI考核“数字陷阱”
- Linux程序设计——信号量、共享内存和消息队列
- Matlab常用函数举例(二十)
- Button添加单击响应函数
- lvs + keepalived 系统架构
- 设计模式之python版(三)--装饰模式
- 使用ORACLE DBCA创建数据库
- android用于打开各种文件的intent
- go语言Advanced Exercise: Complex cube roots
- Android开发 - Activity初步
- 插入排序
- xcode 4.2 设置 横屏,竖屏
- 用线性表进行回文串的判断
- ajax json 调用WCF,服务端FaultException导致 http 400 bad request错误的解决方式