python设计模式之观察者模式
说到观察者模式,在我脑海中总是闪现,这家伙跟消息队列的主题发布订阅有什么关系,虽然本人对消息队列没有很深的研究,但是凭直觉我就认为消息队列的实现就使用了观察者模式吧,所以本文就来模拟消息队列的丐版实现阐述观察者模式是怎样玩的。 观察者模式的GOF官方解释是: 定义对象间的一种一对多(变化)的依赖关系, 以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并更新。 观察者模式类图如下: 主要构成就是主题基类, 观察者基类及其他们的实现。接下来我们开始设计属于我们自己的消息队列。 01、 首先设计主题基类 from abc import ABC class Subject(ABC): def __init__ (self): self.observers = list() def add_observer(self, observer): self.observers.append(observer) def pop_observer(self, observer): self.observers.remove(observer) def notify(self): for observer in self.observers: observer.update() 在Subject基类中,我们需要定义一个观察者列表用于盛放观察者对象