回调机制实现观察者模式
观察者设计模式,允许对象在状态变化时通知其他依赖对象,通常通过回调函数实现。
在回调机制中,可以注册多个回调函数,以便在特定事件发生时依次调用它们。下面是一个示例,展示如何在 C++ 中实现一个简单的事件管理器,支持注册多个回调函数。
#include <iostream>
#include <vector>
#include <functional>
class EventManager {
public:
using EventCallback = std::function<void(int)>; // 定义回调函数类型
// 注册回调函数
void subscribe(EventCallback callback) {
callbacks.push_back(callback);
}
// 触发事件,调用所有注册的回调函数
void triggerEvent(int value) {
for (const auto& callback : callbacks) {
callback(value); // 调用每个回调函数
}
}
private:
std::vector<EventCallback> callbacks; // 存储所有注册的回调函数
};
// 示例回调函数
void callbackA(int value) {
std::cout << "Callback A received value: " << value << std::endl;
}
void callbackB(int value) {
std::cout << "Callback B received value: " << value << std::endl;
}
void callbackC(int value) {
std::cout << "Callback C received value: " << value << std::endl;
}
int main() {
EventManager manager;
// 注册多个回调函数
manager.subscribe(callbackA);
manager.subscribe(callbackB);
manager.subscribe(callbackC);
// 触发事件,所有注册的回调函数将被调用
manager.triggerEvent(42); // 示例值
return 0;
}
在实现观察者模式时,主题对象(Subject)可以注册多个观察者(Observer),当状态变化时,主题会调用所有观察者的回调函数。