什么会观察者模式?观察者模式就是订阅-推送模式。是为了解耦合才会被利用起来的设计模式。
经典的就是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()