美文网首页
Python27_观察者模式

Python27_观察者模式

作者: jxvl假装 | 来源:发表于2019-09-27 12:30 被阅读0次
    class Observer(object):
        """
        观察者。个人理解:订阅者,即订阅主题的人
        """
        def __init__(self, name):
            self.name = name
    
        def update(self, msg):
            print(self.name + "收到信息:" + msg)
    
    class Subject(object):  #主题类
        """
        订阅者,一些供人订阅的主题
        """
        def __init__(self):
            self.observers = []
    
        def add_observer(self, observer):
            self.observers.append(observer)
    
        def remove_observer(self, observer):
            self.observers.remove(observer)
    
        def notify(self,msg):
            for observer in self.observers:
                observer.update(msg)
    
    xiaoming = Observer("xiaoming")
    
    lihua = Observer("lihua")
    
    rain = Subject()
    
    rain.add_observer(xiaoming) #xiaoming订阅了rain这个主题,一旦下雨了,就会通知xiaoming
    rain.add_observer(lihua)    #lihua也订阅了rain这个主题
    rain.notify("下雨了...")   #通知所有的观察者,下雨了
    rain.remove_observer(lihua) #lihua不再订阅下雨这个主题
    rain.notify("打雷了...")   #向订阅了下雨这个主题的人通知:打雷了
    
    

    以上输出结果如下:

    输出结果

    相关文章

      网友评论

          本文标题:Python27_观察者模式

          本文链接:https://www.haomeiwen.com/subject/jshuuctx.html