python设计模式之装饰器模式
来源:互联网 发布:开淘宝网店的流程2016 编辑:程序博客网 时间:2024/05/21 05:37
python设计模式之装饰器模式
意图
- 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式相比生成子类更为灵活
适用性
- 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责
- 处理那些可以撤消的职责
- 当不能采用生成子类的方法进行扩充时
- 可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。
- 另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类
例子
# -*- coding=utf-8 -*-class Foo(object): def __init__(self): self.name = 'foo' def show_func1(self): print("Foo func1") def show_func2(self): print("Foo func2")class FooDecorator(object): def __init__(self, dec): self._dec = dec self.name = 'foo_decorator' def show_func1(self): print("Decorator func1") self._dec.show_func1() def __getattr__(self, name): """ 装饰器类中,已经有的属性和方法,会使用decorator类中的。 如果没有,则会取Foo类的属性和方法 :param name: :return: """ return getattr(self._dec, name)if __name__ == '__main__': foo = Foo() foo_dec = FooDecorator(foo) foo_dec.show_func1() print foo_dec.name foo_dec.show_func2()# output:Decorator func1Foo func1foo_decoratorFoo func2
阅读全文
0 0
- python设计模式之装饰器模式
- python设计模式之装饰器模式
- 8、python设计模式之装饰模式
- Python设计模式(八)【装饰器模式】
- Python设计模式-装饰器模式
- 设计模式之装饰器
- 设计模式之装饰器
- 设计模式之装饰器
- python之装饰器模式
- 【Python学习日记】【设计模式】装饰器(装饰模式)
- 设计模式之-Decorator--装饰器模式
- 设计模式之装饰器模式
- 设计模式之三:装饰器模式
- 设计模式之: Decorator(装饰器)模式
- Java设计模式之装饰器模式
- 设计模式之装饰器模式
- 设计模式之十三:装饰器模式
- 设计模式之装饰器模式
- git小指引
- Function类型——ECMAScript
- 鸟哥的私房菜Linux 学习笔记之 Bash语法
- leetcode 119. Pascal's Triangle II
- quick 添加 GAF
- python设计模式之装饰器模式
- IO流 整理
- java 五子棋
- JUnit单元测试
- python设计模式之组合模式
- js 获取tr下的td下的 input值
- iOS开发证书管理
- 数据源
- PAT 乙级练习题1009. 说反话 (20)