观察者模式

模式说明

定义了一种一对多的关系,让多个观察对象同时监听一个主题对象,当主题对象状态发生变化时会通知所有观察者。

模式结构图

观察者模式

程序示例

说明:两个观察者,得到同一个通知

代码:

class Subject(object):

    observers=[]

    info=''

    def __init__(self,info):

        self.info = info

    def notify(self):

       for o in self.observers:

           o.display(self.info)



    def attach(self,observer):

        self.observers.append(observer)

    def deattach(self,observer):

        self.observers.remove(observer)



class Observer(object):

    def __init__(self,name):

        self.name=name



    def display(self,info):

        print 'notice '+ self.name + ' that '+ info



class NBAObserver(Observer):

    pass



class F1Observer(Observer):

    pass



    

if __name__=='__main__':

    subject = Subject('win win win win')

    observer = NBAObserver('NBA')

    subject.attach(observer)

    observer = F1Observer('F1')

    subject.attach(observer)

    subject.notify()

运行结果:

参考来源:

http://www.cnblogs.com/chenssy/p/3679190.html

http://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html

http://www.cnblogs.com/Terrylee/archive/2006/07/17/334911.html

你可能感兴趣的:(观察者模式)