[DesignPattern]Observer Pattern (Python)

来源:互联网 发布:mac联网后无法上网 编辑:程序博客网 时间:2024/06/05 01:51

周五听峰哥说java的设计模式,于是看看python的实现,理解下。

简单的实现观察者模式。

#!/usr/bin/env python# -*- coding: utf-8 -*-# observer_simple.py# Date: 2014-03-16# CopyRight: orangleliu@gmail.com# Lisence: BSD# tips:简单实现观察者模式class Subject(object):    '''    Subject has three methods:    add_observer    delete_observer    notify    '''    def __init__(self):        self.observers_list = []    def add_observer(self, obs):        if obs is not self.observers_list:            self.observers_list.append(obs)    def delete_observer(self, obs):        try:            self.observers_list.remove(obs)        except ValueError:            pass    def notify(self):        for obs in self.observers_list:            obs.notify()class Observer(object):    def __init__(self, name):        self.name = name    def notify(self):        print "%s accept the infomation" %self.nameif __name__=='__main__':    ob1 = Observer('Java')    ob2 = Observer('Python')    sub = Subject()    sub.add_observer(ob1)    sub.add_observer(ob2)    print 'Tow users'    sub.notify()    print 'One user'    sub.delete_observer(ob1)    sub.notify()'''console:PS D:\code\python\python_abc\design_pattern> python .\observer_simple.pyTow usersJava accept the infomationPython accept the infomationOne userPython accept the infomationquote:    https://github.com/jfcalvo/patterns/blob/master/python/observer.py    http://code.activestate.com/recipes/131499-observer-pattern/'''


0 0
原创粉丝点击