中介者模式(Python版)

中介者模式通过中介对象协调对象间的交互,降低耦合度,简化对象关注点。具体介绍了其结构、工作原理、优点及Python示例应用。

中介者模式(Mediator Pattern)是一种行为设计模式,用于减少对象之间的直接通信,而是通过一个中介对象来协调对象之间的交互。这种模式有助于减少类之间的耦合度,使系统更易于维护和扩展。

 

### 结构

 

- **中介者(Mediator)**:定义一个接口用于与各同事对象通信。

 

- **具体中介者(Concrete Mediator)**:实现中介者接口,协调各同事对象的交互。

 

- **同事类(Colleague)**:定义一个接口,用于与中介者通信。

 

- **具体同事类(Concrete Colleague)**:实现同事接口,通过中介者协调与其他同事对象的交互。

 

### 工作原理

 

1. **中介者**:负责协调各同事对象的交互,知道各个同事对象,并能够了解它们的行为。

 

2. **同事类**:通过中介者来通信,而不是直接与其他同事对象进行交互。

 

3. **具体中介者**:实现协调逻辑,处理同事对象之间的通信和交互。

 

4. **具体同事类**:实现自己的业务逻辑,并通过中介者来处理与其他同事对象的交互。

 

### 优点

 

1. **降低耦合**:将对象之间的交互集中在中介者对象中,降低了对象之间的直接依赖。

 

2. **简化对象**:每个对象只需要关注自己的业务逻辑,不需要了解其他对象的实现细节。

 

3. **易于扩展**:可以更灵活地增加新的同事类或修改现有的交互方式。

 

### 示例

 

以下是一个简单的Python示例演示了中介者模式的实现:

 

 

# 中介者接口

class Mediator:

    def send_message(self, colleague, message):

        pass

 

# 具体中介者

class ConcreteMediator(Mediator):

    def __init__(self):

        self.colleague1 = Colleague1(self)

        self.colleague2 = Colleague2(self)

 

    def send_message(self, colleague, message):

        if colleague == self.colleague1:

            self.colleague2.receive_message(message)

        else:

            self.colleague1.receive_message(message)

 

# 同事类接口

class Colleague:

    def __init__(self, mediator):

        self.mediator = mediator

 

    def send(self, message):

        pass

 

    def receive_message(self, message):

        pass

 

# 具体同事类

class Colleague1(Colleague):

    def send(self, message):

        self.mediator.send_message(self, message)

 

    def receive_message(self, message):

        print("Colleague1 received message:", message)

 

class Colleague2(Colleague):

    def send(self, message):

        self.mediator.send_message(self, message)

 

    def receive_message(self, message):

        print("Colleague2 received message:", message)

 

# 客户端代码

mediator = ConcreteMediator()

colleague1 = Colleague1(mediator)

colleague2 = Colleague2(mediator)

 

colleague1.send("Hello from Colleague1")

colleague2.send("Hi from Colleague2")

 

 

在这个示例中,我们定义了中介者接口 `Mediator`,具体中介者 `ConcreteMediator`,同事类接口 `Colleague` 和具体同事类 `Colleague1` 和 `Colleague2`。中介者协调同事对象之间的交互,同事对象通过中介者来通信。

 

中介者模式适用于需要减少对象之间直接通信,通过一个中介者来协调对象之间交互的情况。通过中介者模式,可以降低系统的复杂度,提高代码的可维护性和灵活性。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值