使用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`方法向中介者发送消息,在控制台输出接收到的消息。
这个示例只是一个简单的中介者模式实现,实际场景中可能会更加复杂。根据实际需求,可以根据中介者对象的封装程度和使用方式进行调整。