`观察者`模式:利用`Python`的`WeakSet`解决`观察者`模式中的`内存`泄漏问题。

利用 WeakSet 解决 观察者 模式中的内存泄漏问题 大家好,今天我们来聊聊观察者模式,以及如何在 Python 中使用 WeakSet 来解决观察者模式中常见的内存泄漏问题。 观察者模式简介 观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象的状态发生改变时,所有依赖它的观察者对象都会收到通知并自动更新。 简单来说,就是有一个主题 (Subject) 维护着一个观察者 (Observer) 列表,主题的状态改变会通知所有观察者。 主要角色: 主题 (Subject): 维护观察者列表,提供添加、删除观察者的方法,并在状态改变时通知观察者。 观察者 (Observer): 定义一个更新接口,当接收到主题的通知时,执行更新操作。 具体主题 (ConcreteSubject): 主题的具体实现,维护自身状态,并在状态改变时通知观察者。 具体观察者 (ConcreteObserver): 观察者的具体实现,实现更新接口,响应主题的通知。 优点: 解耦: 主题和观察者之间是松耦合的,主题不需要知道观察者的具体实现。 扩展性: 可 …

C++ 观察者模式:在多线程环境中实现事件通知

好的,各位观众老爷们,大家好!今天咱就来聊聊C++里那个有点意思的“观察者模式”,而且得是在“多线程”这个热闹的舞台上玩。这俩词儿一凑一块儿,就有点像在嘈杂的菜市场里试图用广播通知大家“猪肉降价了!”——既要保证消息传到,又不能把市场搞得更乱。 啥是观察者模式?(别跟我说你不知道!) 简单来说,观察者模式就像订阅报纸。你(观察者)订阅了《头条日报》(主题),一旦《头条日报》有新内容(事件发生),它就会自动把消息推送给你。你不用天天打电话问编辑“今天有啥新闻没?”。 用更技术的话说: 主题(Subject): 维护一个观察者列表,当状态发生变化时,通知所有观察者。 观察者(Observer): 定义一个更新接口,用于接收主题的通知。 具体主题(Concrete Subject): 继承主题,实现状态变化时通知观察者的逻辑。 具体观察者(Concrete Observer): 继承观察者,实现接收到通知后的处理逻辑。 C++代码来一波!(别光说不练!) 先来个简单的单线程版本,让大家热热身: #include <iostream> #include <vector> …