"""
观察者模式
"""
class Observer:
def update(self, notice):
pass
class Notice:
def __init__(self):
self.observers = []
def attach(self, obs: Observer):
self.observers.append(obs)
def detach(self, obs: Observer):
self.observers.remove(obs)
def notify(self):
for obs in self.observers:
obs.update(self)
class StaffNotice(Notice):
def __init__(self, company_info):
super().__init__()
self.__company_info = company_info
@property
def company_info(self):
return self.__company_info
@company_info.setter
def company_info(self, info):
self.__company_info = info
self.notify()
class Staff(Observer):
def __init__(self):
self.company_info = None
def update(self, notice: StaffNotice):
self.company_info = notice.company_info
staff_notice = StaffNotice("初始化公司信息")
staff1 = Staff()
staff2 = Staff()
staff_notice.attach(staff1)
staff_notice.attach(staff2)
staff_notice.company_info = "假期放假通知!"
print(staff1.company_info)
print(staff2.company_info)