事件监听器是一种常见的设计模式,用于在对象之间建立一种松耦合的关系,当某个对象发生特定事件时,可以通知所有注册了该事件的监听器对象。
1 | #include <functional> |
使用:
1 | int main(int argc, char* argv[]) |
EventListener表示事件监听器抽象类,其中包含一个HandleEvent方法用于处理事件。
EventSource表示事件源,其中包含一个RegisterListener方法用于注册监听器、一个UnregisterListener方法用于注销监听器,
以及一个NotifyListeners方法用于通知所有注册的监听器。
在NotifyListeners方法中,我们使用std::thread创建了一个新线程,并在其中调用HandleEvent方法处理事件。
在main函数中,我们创建了一个EventSource对象和两个MyListener对象,并通过RegisterListener方法将它们注册到事件源中。
然后,我们通过NotifyListeners方法发送了一个事件1,并观察到两个监听器都收到了事件。
接着,我们通过UnregisterListener方法将一个监听器注销掉,再次发送了一个事件2,并观察到只有一个监听器收到了事件。