1. 单例模式
只有一个实例、它必须自行创建这个实例,不需要显示的手动去创建实例、它必须自行向整个系统提供这个实例。
在python中模块就是一个实现单例很好的工具,
python的模块:
所有变量都会绑定到模块
模块只需要初始化一次
import 机制是线程,安全的(保证在并发状态下模式也只有一个实例)
惯用方法:
在命名模块的时候,首个字母大写 Monitor.py
__all__
2. 装饰器
pythonic的装饰器
def func(arg):
def _(tmp = 0.0):
return tmp + arg
return _
a = func(0.99)
b = func(0.1)
c = func(0.2)
print a(b(c()))
-----> 1.2
3. 动态语言特有的设计模式: Mixin ( and duck typing )
动态地改变实例的类型的基类,在不修改生成实例过程的情况下,给实例增加(改变)功能。可用它实现插件框架。
class Bird(object):
pass
bird = Bird()
class FlyMixin:
def fly(self):
print "I can fly."
bird.__class__.__bases__ += (FlyMixin,)
bird.fly()
---> I can fly.
工具:
docopt 解释器模式 (vs. getopt, optparse, argparse)