事件委託處理機制實現了在兩個沒有聯絡的物件之間建立一種事件收發機制,事件傳送方和事件監聽方互相不必知道對方的任何細節,避免物件之間的依賴,降低系統耦合性。
直接上**:
event.h
#pragma once
#include using std::map;
#ifdef dll_export
#define dll_api _declspec(dllexport)
#else
#define dll_api _declspec(dllimport)
#endif
enum eventtype
;#define event_callback(classname , function) new eventcallback(function)
class dll_api ievent
;class dll_api ieventcallback
virtual ~ieventcallback(){}
virtual void call(void* reveiver,ievent& value) = 0;
};templateclass dll_api eventcallback:public ieventcallback
virtual ~eventcallback(){}
virtual void call(void* reveiver,ievent& value) }
};class dll_api eventmanager
; void sendevent(ievent& event,void* sender);
void connectevent(int eventtype,void* sender,void* receiver,ieventcallback* callback);
void disconnectevent(int eventtype,void* receiver);
private:
static eventmanager* m_pthis;
typedef mapeventlistener;
typedef mapeventmap;
eventmap m_evntmap;
};
event.cpp
#include "ievent.h"
ievent::ievent(int type)
ievent::~ievent(void)
int ievent::gettype()
//eventmanager* eventmanager::m_pthis = null;
eventmanager::eventmanager()
eventmanager::~eventmanager()
lisit++;
} it++;
} m_pthis = null;
}eventmanager* eventmanager::getsingleton()
void eventmanager::sendevent(ievent& event,void* sender)
} }}void eventmanager::connectevent(int eventtype,void* sender,void* receiver,ieventcallback* callback)
else }
}void eventmanager::disconnectevent(int eventtype,void* receiver)
it->second.erase(lit);
return;
} }}
android事件處理機制
談到android事件處理,最複雜的就是對touch事件的處理,因為touch事件包括 down,move,up,cancle和多點觸控等多種情況,多點觸控的情況先不討論,因為touch有這麼多的狀態,所以touch相對來說是最難處理的,下面就來討論一下android系統是如何處理touch事件的 ...
Esper事件處理機制
1.sendevent 和對應lisenter的update 方法是在同乙個執行緒裡面。所以update方法的效率會影響sendevent的執行。2.在sendevent 的時候,會呼叫matchevent的方法,這個方法會為每乙個呼叫sendevent的執行緒建立乙個dispatch的list,如...
C 的事件處理機制
在以往的關於事件處理的程式中,我們更多的是採用一種迴圈等待的方式,即為了檢測某個事件是否發生,迴圈的檢測某個變數是否發生變化但這樣會占用大量的資源。而c 的事件處理機制提供了一種非常好的解決方案。程式不再不停的檢查裝置,而是等待訊息的到來,然後交給程式來處理他它。這樣的話,作業系統中只是傻瓜式的將訊...