python实现中介模式
时间: 2023-06-29 10:02:52 浏览: 65
中介模式是一种行为设计模式,它使得对象间的通信通过一个中介对象来进行,从而降低了对象间的直接耦合性。Python可以使用以下方式实现中介模式:
```python
class Mediator:
def __init__(self):
self.colleague1 = Colleague1(self)
self.colleague2 = Colleague2(self)
def notify_colleague1(self, message):
self.colleague2.process_message(message)
def notify_colleague2(self, message):
self.colleague1.process_message(message)
class Colleague1:
def __init__(self, mediator):
self.mediator = mediator
def send_message(self, message):
self.mediator.notify_colleague2(message)
def process_message(self, message):
print(f"Colleague1 received message: {message}")
class Colleague2:
def __init__(self, mediator):
self.mediator = mediator
def send_message(self, message):
self.mediator.notify_colleague1(message)
def process_message(self, message):
print(f"Colleague2 received message: {message}")
```
在上面的代码中,我们定义了一个中介者 `Mediator` 和两个同事 `Colleague1` 和 `Colleague2`。中介者持有两个同事的实例,并且提供了通知同事的方法。当某个同事调用 `send_message` 方法时,它会将消息传递给中介者,中介者再将消息传递给另一个同事,从而完成了同事间的通信。
可以使用以下代码测试上述实现:
```python
mediator = Mediator()
colleague1 = Colleague1(mediator)
colleague2 = Colleague2(mediator)
colleague1.send_message("Hello from Colleague1!")
colleague2.send_message("Hello from Colleague2!")
```
输出结果为:
```
Colleague2 received message: Hello from Colleague1!
Colleague1 received message: Hello from Colleague2!
```
从输出结果可以看出,同事间的消息可以通过中介者进行传递,从而实现了对象间的解耦。