7 观察者模式
7.1 UML类图
原理:
(1)Subject类注册Observer
(2)Subject类通知其他对象时,通过修改更新注册时添加对象的状态。
(3)Observer直接获取Subject修改后的状态变量,即实现了该状态变量的输出
7.2 源码实现
class Observer:
def __init__(self,Observer_Name):
self.Observer_Name=Observer_Name
self.Observer_State=0
def update(self,state):
self.Observer_State = state
print("更新后观察者%d的State值为%d"%(self.Observer_Name,self.Observer_State))
class Subject:
def __init__(self):
self.Subject_State=0
self.Observer_List = []
def Set_State(self,Subject_State):
self.Subject_State=Subject_State
def Attach(self,Observer):
self.Observer_List.append(Observer)
def Detach(self,Observer):
print("删除观察者%d"%Observer.Observer_Name)
self.Observer_List.remove(Observer)
def Notify(self):
for observer in self.Observer_List:
observer.update(self.Subject_State)
if __name__=='__main__':
Subject = Subject()
Observer1 = Observer(1)
Observer2 = Observer(2)
Subject.Attach(Observer1)
Subject.Attach(Observer2)
Subject.Set_State(10)
Subject.Notify()
Subject.Detach(Observer1)
Subject.Notify()