pattern 学习记录

来源:互联网 发布:床上用品多久清洗 知乎 编辑:程序博客网 时间:2024/04/29 15:43

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)




0 0
原创粉丝点击