/** * @name 观察者模式 * @brief: 定义对象间一对多的依赖关系 * @note 场景:事件处理系统、消息订阅、MVC 模型更新视图 */ #include #include class Observer { public: virtual void update(const std::string& msg) = 0; }; class Subject { std::vector observers; public: void attach(Observer* o) { observers.push_back(o); } void notify(const std::string& msg) { for (auto o : observers) o->update(msg); } }; class ConcreteObserver : public Observer { void update(const std::string& msg) override { /* 处理消息 */ } }; // 使用 int main() { Subject subject; subject.attach(new ConcreteObserver()); subject.notify("Event occurred!"); return 0; }