# 观察者模式允许一个对象(观察者)监听另一个对象(主题)的状态变化,并在状态变化时得到通知。 # 主类信息发生变化,通知登记的各个对象(把自己当当参数传过去)自行处理变化 # 当购物车中的商品数量发生变化时,库存系统和价格计算系统需要实时更新。 # 观察者模式(Observer)或发布-订阅模式(Publish-Subscribe) import abc class Observer(metaclass=abc.ABCMeta): @abc.abstractmethod def update(self, cart): pass class InventorySystem(Observer): def update(self, cart): # 更新库存逻辑... pass class PriceCalculator(Observer): def update(self, cart): # 重新计算总价逻辑... pass class ShoppingCart: def __init__(self): self._items = {} self.observers = [] def add_item(self, item_id, quantity): # 添加商品到购物车并通知所有观察者 self._items[item_id] = quantity for observer in self.observers: observer.update(self) def attach(self, observer): self.observers.append(observer) # 创建购物车并添加观察者 cart = ShoppingCart() inventory_system = InventorySystem() price_calculator = PriceCalculator() cart.attach(inventory_system) cart.attach(price_calculator) cart.add_item('item1', 2) # 当添加商品时,库存系统和价格计算器都会收到更新通知