在线文字转语音网站:无界智能 aiwjzn.com

使用Python实现中介者模式

中介者模式用于解耦多个对象之间的复杂关系,通过引入一个中介对象来协调各个对象之间的通信。在Python中,可以利用类和对象的特性来实现中介者模式。 下面是一个简单的中介者模式示例代码: python class Mediator: def __init__(self): self.colleague1 = Colleague1(self) self.colleague2 = Colleague2(self) def notify(self, colleague, message): if colleague == self.colleague1: self.colleague2.receive(message) elif colleague == self.colleague2: self.colleague1.receive(message) class Colleague1: def __init__(self, mediator): self.mediator = mediator def send(self, message): self.mediator.notify(self, message) def receive(self, message): print(f"Colleague1 received: {message}") class Colleague2: def __init__(self, mediator): self.mediator = mediator def send(self, message): self.mediator.notify(self, message) def receive(self, message): print(f"Colleague2 received: {message}") mediator = Mediator() colleague1 = Colleague1(mediator) colleague2 = Colleague2(mediator) colleague1.send("Hello from Colleague1") colleague2.send("Hi from Colleague2") 在这个示例代码中,`Mediator`类充当中介者,维护对各个同事对象的引用。`Colleague1`和`Colleague2`是两个具体的同事类,它们分别持有对中介者对象的引用。 当一个同事对象发送消息时,调用中介者的`notify`方法,并传入自身和消息内容。中介者根据不同的同事对象进行逻辑判断,决定将消息传递给其他同事对象。同事对象的`receive`方法用于接收消息并进行处理。 在示例代码的最后,创建了一个中介者对象和两个同事对象。分别通过调用`send`方法向中介者发送消息,在控制台输出接收到的消息。 这个示例只是一个简单的中介者模式实现,实际场景中可能会更加复杂。根据实际需求,可以根据中介者对象的封装程度和使用方式进行调整。