六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 40|回复: 0

python 设计模式之

[复制链接]

升级  69.33%

42

主题

42

主题

42

主题

秀才

Rank: 2

积分
154
 楼主| 发表于 2013-1-15 02:13:03 | 显示全部楼层 |阅读模式
Vistor 模式:
   
    Vistor 模式常常用于将访问数据,支持传入不同的数据访问器(或是处理器),上例子

def visit(directory, visitor):    for root, dirs, files in os.walk(directory):         for f in files:             ext = os.path.splitext(f)[-1][1:]             if hasattr(visitor,ext):                 a = getattr(visitor,ext)                 a(f)class FileReader(object):     """     File Reader     """     def bmp(self,f):         print "is bmc",f visit("d:\\eastmoney\\",FileReader())is bmc btclose.bmpis bmc btclose2.bmpis bmc btclosedown.bmpis bmc btmax.bmp




Observer 模式:
   
    Observer 模式常常用于侦听对象发生的变化,上例子
class Event(object):    _observers = []    def __init__(self, subject):        self.subject = subject    @classmethod    def register(cls, observer):        if observer not in cls._observers:            cls._observers.append(observer)    @classmethod    def unregister(cls, observer):        if observer in cls._observers:            self._observers.remove(observer)                @classmethod    def notify(cls, subject):        event = cls(subject)        for observer in cls._observers:            observer(event)            class WriteEvent(Event):    def __repr__(self):        return 'WriteEvent'    def log(event):    print '%s was written' % event.subject        WriteEvent.register(log)WriteEvent.notify('a given file')
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表