星期二, 1月 17, 2006

Event 與Command

Event 代表事件發生,Command代表處理動作。
發生--->處理 並不是一對一的,有可能是一對多,或是多對一。

同一個Event的處理動作,不一定會是一樣的,例如 OnActivate Event,對象是Menu的話,要啟動ActiveMenu Command。對象是button的話,要啟動ActiveButton Command。這就是dispatch的動作。

把Command 處理全部寫在CommandHandler上。
Event 的處理:
根據target,轉成Command,再由Command Handler處理。

這就是function : EventOccure(eventName)

所以在程式任何時候應該要產生Event時(例如: Read File Error),就直接呼叫EventOccure( eventName) (例如 EventOccure("ReadFileError") )。

這像自然會找到正確的CommandHandler來處理。

當然,也有可能會造成re-entrant的情況:

Event --> CommandHandler --> Event --> CommandHandler...

沒有留言:

網誌存檔