python 订阅者模式示例

以下是一个简单的Python订阅者模式示例:

class Publisher:
    def __init__(self):
        self.subscribers = []

    def add_subscriber(self, subscriber):
        self.subscribers.append(subscriber)

    def remove_subscriber(self, subscriber):
        self.subscribers.remove(subscriber)

    def notify_subscribers(self, message):
        for subscriber in self.subscribers:
            subscriber.update(message)


class Subscriber:
    def __init__(self, name):
        self.name = name

    def update(self, message):
        print(f"{self.name} 收到消息: {message}")


if __name__ == '__main__':
    publisher = Publisher()

    subscriber1 = Subscriber("订阅者1")
    subscriber2 = Subscriber("订阅者2")

    publisher.add_subscriber(subscriber1)
    publisher.add_subscriber(subscriber2)

    publisher.notify_subscribers("新消息1")

    publisher.remove_subscriber(subscriber1)

    publisher.notify_subscribers("新消息2")

在上面的示例中,Publisher 是发布者类,Subscriber 是订阅者类。Publisher 类具有添加订阅者、移除订阅者和通知订阅者的功能。Subscriber 类具有更新方法,当收到消息时会打印出来。

在示例中,首先创建一个 Publisher 对象,并创建两个 Subscriber 对象。然后将这两个订阅者添加到发布者的订阅者列表中。接下来,调用 notify_subscribers 方法,发送新消息给所有订阅者。最后,移除一个订阅者,并再次发送一条新消息给剩下的订阅者。

当运行上面的代码时,输出结果应该为:

订阅者1 收到消息: 新消息1
订阅者2 收到消息: 新消息1
订阅者2 收到消息: 新消息2

这个简单的示例展示了订阅者模式的基本原理,发布者将消息发送给所有订阅者,订阅者通过更新方法接收消息并做出相应的处理。