理解Python中介者模式的定义和概念

2023-04-04 00:00:00 定义 理解 中介

中介者模式是一种设计模式,旨在通过将对象之间的交互委托给一个中介对象来降低对象之间的耦合度。中介者对象负责协调并控制对象之间的通信,从而使对象之间的交互变得简单而有序。

在 Python 中,可以使用类来实现中介者模式。中介者类充当协调者,它持有对所有参与对象的引用,并在需要时调用它们的方法。每个参与对象都知道中介者,并通过它来与其他对象进行通信,而不是直接相互交互。

以下是一个简单的示例,演示如何使用中介者模式来实现一个聊天室。```
在这个示例中,我们有一个 ChatRoom 中介者类,它负责协调聊天室中所有用户之间的通信。每个用户都持有对中介者的引用,并通过它来向聊天室中的其他用户发送消息。

class ChatRoom:
    def __init__(self):
        self.users = []

    def add_user(self, user):
        self.users.append(user)

    def send_message(self, sender, message):
        for user in self.users:
            if user != sender:
                user.receive_message(sender.name, message)

class User:
    def __init__(self, name, chat_room):
        self.name = name
        self.chat_room = chat_room

    def send_message(self, message):
        self.chat_room.send_message(self, message)

    def receive_message(self, sender_name, message):
        print(f"{sender_name} says: {message}")

# 创建聊天室
chat_room = ChatRoom()

# 创建用户并将他们添加到聊天室
alice = User("Alice", chat_room)
chat_room.add_user(alice)
bob = User("Bob", chat_room)
chat_room.add_user(bob)
charlie = User("Charlie", chat_room)
chat_room.add_user(charlie)

# 用户发送消息
alice.send_message("Hello, everyone!")
bob.send_message("Hi, Alice!")
charlie.send_message("Nice to meet you all.")

在这个例子中,我们创建了一个 ChatRoom 类作为中介者,并将其引用传递给每个 User 对象。当用户发送消息时,他们调用他们自己的 send_message 方法,并将消息传递给 ChatRoom 中介者。ChatRoom 然后循环遍历每个用户,并调用他们的 receive_message 方法,以便其他用户可以看到这条消息。

相关文章