观察者模式的python实现

时间:2023-02-11 22:44:21

什么会观察者模式?观察者模式就是订阅-推送模式。是为了解耦合才会被利用起来的设计模式。

经典的就是boss 前台和员工之间的故事。一天A员工在看电影,B员工在看动漫,但是两人担心boss来了,自己没及时关掉页面,被老板发现,就委托前台的小姐姐如果老板来了通知一下他们。

对于A和B来说就出于观察者的位置,前台小姐姐就出于统治者的位置。

分析一下:前台小姐姐需要有两个属性:老板的状态和需要通知的员工列表

class  basenotify():
    def __init__(self):
        self.t_list = []
        self.status = ''
    def myappend(self,observer):
        pass
    def update(self):
        pass

class sister(basenotify):
    def __init__():
        basenotify.__init__(self)
        pass
    def myappend(observer):
        self.t_list.append(observer)
    def notify():
        for v in self.t_list:
            v.update()

员工可以没有属性,但是可以有多个员工

class baseobserver():
    def __init__(self,name,sex):
        self.name = name
        self.sex = sex
        pass
    def update(self):
        pass

class Aobserver(baseobserver):
    def __init__(self,name,sex):
        baseobservise.__init__(name,sex)
        pass

    def update(self):
        print '11111111111111'

class Bobserver(baseobserver):
    def __init__(self,name,sex):
        baseobservise.__init__(name,sex)
        pass

    def update(self):
        print '22222222222222'

如何调用:

if __name__=="__main__":
    mysister = sister()
    a= Aobservise()
    b= Bobservise()
    mysister.append(a)
    mysister.append(b)
    mysister.status ='i am comming'
    mysister.notify()