使用解析事件日誌的項目,然後根據這些事件的屬性更新模型。我對於「完成任務」一直很懶惰,更關心前期優化,精益代碼和適當的設計模式。主要是一個自我教學實驗。我對更有經驗的設計師認爲相關的模式感興趣,或者什麼類型的僞碼對象體系結構最好,最容易維護等等。適用於事件日誌解析器的設計模式?
可以有單個日誌中的500000點的事件,並有大約60類型的事件,所有這些共享關於7個鹼基的屬性,然後根據各自的事件類型0至15的其他屬性。事件的類型是每行中日誌文件的第二個屬性。
因此,我試過了一個非常難看的命令解析器,它逐行逐行掃描日誌,然後逐行處理事件。然後我嘗試了一個使用「nextEvent」模式的詞法規範,該模式在循環中調用並進行處理。然後我嘗試了一個普通的「解析」方法,它永遠不會返回,只是將事件引發到註冊的偵聽器回調。無論事件類型如何,我都嘗試了單個回調,並且針對每種事件類型都使用了回調方法。
我試過了一個基礎「事件」類與所有可能的屬性的聯合。我試圖避免「新事件」調用(因爲可能有大量的事件並且事件對象通常很短),並且每種類型的回調方法都帶有基本屬性參數。我已經嘗試了60個事件類型的每一個具有7個公共基本屬性的抽象事件父類的子類。
我最近試圖進一步採用Command模式來爲每個事件類型添加事件處理代碼。我不確定我是否喜歡這樣,它和每種類型的回調方法非常相似,只是代碼在類型子類中的執行函數中,而不是類型中的回調方法。
的問題是,很多模型更新的邏輯是相通的,很多的它是特定的子類,我剛開始弄不清楚整個事情。我希望有人能夠至少指出我想要考慮的方向!
嗯,我很確定我想堅持使用原語作爲事件屬性,因爲它們是已知的並且是常量,我非常關心性能。我想生成一個聚合信息報告的事件塊。事後,但我想要有序地(確定性地)處理? – Josh 2008-09-18 16:41:30