Python23.2_观察者模式

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("打雷了...")   #向订阅了下雨这个主题的人通知:打雷了

以上输出结果如下:

输出结果

猜你喜欢

转载自blog.csdn.net/qq_34873298/article/details/90729658
今日推荐