中介者模式是一种对象间通信的优雅解决方案,它通过引入一个中介者对象来封装复杂的交互逻辑。而外观模式则是为子系统中的一组接口提供一个统一的高层接口,隐藏了子系统之间的复杂关系。两者的主要区别在于中介者模式关注对象间的通信,而外观模式关注子系统的接口统一。
中介者模式(Mediator Pattern)是一种行为型设计模式,用于降低多个对象之间的直接交互,这种模式通过引入一个中介者对象来封装各个对象的交互逻辑,使得对象间的通信变得更加灵活和可扩展,在实际应用中,中介者模式可以有效地简化系统架构,提高代码的可维护性和可读性。
中介者模式的主要组成部分包括:
1、抽象中介者(Mediator):定义了中介者对象与其他对象之间的交互接口,通常包含用于发送和接收消息的方法。
2、具体中介者(Concrete Mediator):实现抽象中介者定义的接口,负责协调各个对象之间的交互。
3、抽象同事类(Colleague):定义了对象与其他对象交互的接口,通常包含用于发送和接收消息的方法。
4、具体同事类(Concrete Colleague):实现抽象同事类定义的接口,与其他对象进行交互。
下面是一个简单的中介者模式示例:
from abc import ABC, abstractmethod class Mediator(ABC): def __init__(self): self.colleagues = [] @abstractmethod def send(self, message, colleague): pass @abstractmethod def receive(self, message): pass class ConcreteMediator(Mediator): def __init__(self): super().__init__() def send(self, message, colleague): colleague.receive(message) def receive(self, message): print(f"Mediator received: {message}") class Colleague(ABC): def __init__(self, mediator): self.mediator = mediator self.mediator.colleagues.append(self) def send(self, message): self.mediator.send(message, self) def receive(self, message): print(f"Colleague received: {message}") 使用中介者模式的示例 mediator = ConcreteMediator() colleague1 = Colleague(mediator) colleague2 = Colleague(mediator) colleague1.send("Hello") colleague2.send("Hi")
在这个示例中,我们定义了一个中介者ConcreteMediator
和一个同事类Colleague
。ConcreteMediator
负责协调Colleague
对象之间的交互,而Colleague
对象则负责发送和接收消息,通过这种方式,我们可以实现对象间的解耦,使得系统更加灵活和可扩展。