''' 中介者模式(Mediator Pattern)是一种行为型设计模式,它定义了一个中介对象来封装一系列对象之间的交互。 中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 设想书店管理系统,其中包含了多个组件,比如库存管理、订单处理、顾客管理等。 这些组件之间需要相互通信来协同工作。我们可以使用中介者模式来减少这些组件之间的直接依赖。 在这个示例中,BookstoreMediator 充当了中介者的角色,它协调了库存管理、订单处理和顾客管理之间的交互。 当某个事件发生时(比如顾客下订单),相应的组件会通过中介者发送通知,中介者再根据事件类型协调其他组件的响应。 ''' from abc import ABC, abstractmethod #定义一个中介者接口和具体的中介者实现 # 中介者接口 class Mediator(ABC): @abstractmethod def notify(self, sender, event): pass # 具体的中介者实现 class BookstoreMediator(Mediator): def __init__(self, inventory, order, customer): self.inventory = inventory self.order = order self.customer = customer def notify(self, sender, event): if event == 'book_ordered': print("BookstoreMediator: Order notification received. Checking inventory...") if self.inventory.has_stock(): print("BookstoreMediator: Inventory has stock. Processing order...") self.order.process_order() self.customer.notify_order_success() else: print("BookstoreMediator: Inventory out of stock. Cancelling order...") self.order.cancel_order() self.customer.notify_order_failure() # 可以添加更多的事件处理逻辑 # 库存管理组件 class Inventory: def has_stock(self): # 这里简化逻辑,直接返回有库存 return True # 订单处理组件 class Order: def process_order(self): print("Order: Order is being processed...") def cancel_order(self): print("Order: Order is being cancelled...") # 顾客管理组件 class Customer: def notify_order_success(self): print("Customer: Order successful. Notifying customer...") def notify_order_failure(self): print("Customer: Order failed. Notifying customer...") # 组件之间的交互通过中介者进行 class BookstoreComponent: def __init__(self, mediator): self.mediator = mediator def send_notification(self, event): self.mediator.notify(self, event) # 示例使用 if __name__ == "__main__": # 创建组件 inventory = Inventory() order = Order() customer = Customer() # 创建中介者并注入组件 mediator = BookstoreMediator(inventory, order, customer) # 创建与中介者关联的书店组件(这里以订单为例) order_component = BookstoreComponent(mediator) # 触发事件(比如:下订单) order_component.send_notification('book_ordered')