观察者模式即当被观察对象发生变化时,能及时通知观察者,这种需求主要用在网站或者店铺的关注上,比如你关注了某个微信公众号,或者淘宝上的商家,当公众号有更新或者店家新到商品或者商品促销时,可以及时通知你。
代码实现了E_commerce被观察对象基类。主要实现了属性_observers和方法add_observer(注册观察者),delete_observer(注销观察者), notify_all_observers(通知所有观察者)。实现了A_shop类,继承自E_commerce。A_shop包含promotion(促销活动列表)。当进行促销时,会把消息发送给所有关注这家店铺的消费者。实现了Observer抽象类,其有必须实现的方法update。实现了A_customer, B_customer两个继承自Observer抽象类的观察者类。当店铺做新的促销活动时,会把self和促销活动传递给观察者的update方法。update方法具体如下:
import abc
class E_commerce(object):
"""
电商基类,实现了注册,注销观察者,通知所有观察者方法
"""
def __init__(self):
self._observers = []
def add_observer(self, observer):
if observer not in self._observers:
self._observers.append(observer)
def delete_observer(self, observer):
if observer in self._observers:
self._o