2012-08-13 89 views
1

我一直在閱讀關於活動經理的信息,並且我理解了基本的機制,或者我也這麼認爲。我一直在看到情況,如在事件中擁有「調度」功能的原因是什麼?

IEvent* pEvent = m_events; 

while(pEvent) { 
    removeEvent(pEvent); 
    pEvent->Dispatch(); // What is this? 
    pEvent = pEvent->Next; 
} 

但是,做「pEvent->調度」的要點是什麼?我認爲這與事件聽力有關,但我不完全確定。

回答

2

在您調出代碼片段時,「監聽」事件已經完成。 「聽」後,所有的事件都被收集在一個容器中,每個事件都需要處理。 很可能是IEvent類中的虛擬方法,因此每個派生事件都可以通過特定於該類事件的例程來處理。

class IEvent { 
protected: 
    virtual ~IEvent() {} 
    virtual void Dispatch() = 0; 
    //... 
}; 
+0

出於好奇,你爲什麼要'Dispatch'方法被'保護'? – maba 2012-08-13 08:40:19

+0

@maba:我在考慮調度循環是IEvent本身的一個靜態函數。我本可以把它變成私有的,但保護只是我對接口類的習慣默認。 – jxh 2012-08-13 08:55:44

+0

好吧,我寧願讓它們公開,以便它們對應於Java中的一個接口。然後可以從EventManager或類似的地方調用它們。 – maba 2012-08-13 08:57:59

相關問題