行为型模式-观察者模式
# 行为型模式-观察者模式 from abc import ABCMeta, abstractmethod class IObserver(metaclass=ABCMeta): @abstractmethod def update(self, temperature): pass class Baidu(IObserver): temperature = 0 def update(self, temperature): print("百度天气更新:%s --> %s" % (self.temperature, temperature)) self.temperature = temperature class Weixin(IObserver): temperature = 0 def update(self, temperature): print("微信天气更新:%s --> %s" % (self.temperature, temperature)) self.temperature = temperature class Subject(metaclass=ABCMeta): @abstractmethod def register(self, observer): """""" pass @abstractmethod def remove(self, observer): pass @abstractmethod def notify(self): pass class Weather(Subject): temperature = 0 _observer_list = [] def register(self, observer: IObserver): self._observer_list.append(observer) def remove(self, observer: IObserver): self._observer_list.remove(observer) def notify(self): for item in self._observer_list: item.update(self.temperature) def data_change(self, temperature): self.temperature = temperature self.notify() if __name__ == "__main__": weather = Weather() weather.register(Weixin()) weather.register(Baidu()) weather.data_change(1) weather.data_change(2)