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()