2014-10-16 28 views
1

我正在通過網絡接收簡單數據,文本中的名稱/值對。我需要編寫一個流程來處理這些對,然後將它們剔除並通過事件總線發送到另一個區域進行處理。每個名稱代表不同的數據「類型」或轉換操作,我必須對字符串的值部分進行操作。從表面上看,這很簡單,但我正在尋找一個簡單的「正確」體系結構來完成這項工作,以便我可以轉換300種不同類型的值。下面是一個簡單的例子:在Java中爲EventBus解析不同的值類型

輸入:

9,19.0,31,0.00,34,0.379579,37,1.319952,55,0.03,66,0.00,81,1.558965,82,1.578690,92,0.03,99,24.57,100,-8144.29,101,0.13,105,2.999,106,148.3,108,-155.8,111,4.263,112,155.0,113,-170.0,167,10.60,205,1.558965,231,-0.040,232,-93.8,237,75.0,238,0.100 

真正含義是:

9,19.0 

31,0.00 

34,0.379579 

等...

在 「34」 事件的情況下,我必須將該號碼轉換爲不同的值以顯示給用戶。因此,每種事件類型都可能具有不同的轉換過程。實際上,我認爲在所有300種事件類型中可能有一組轉換過程(如12個)。

這是我的問題。

  1. 如何處理所有轉換類型?這就像是可以注入解析器的排序算法或比較器嗎?

  2. 如何在對象創建和GC方面高效?這些對來自網絡,我不想只是擺脫GC的對象(我在Android上)。

  3. 我應該將各種類型映射到公交車上的事件,只讓消費者註冊他們感興趣的事件,或者向每個消費者發送一個通用事件並讓他們每次決定我正在考慮前者,但也對該樣板感到厭煩)。

任何一般的想法將不勝感激。

回答

0

我最終讓編譯器爲我擔心。對於每種特定類型的轉換,我都有一個巨大的開關語句,其中有很多很多情況。

我也梳理了代碼,並提出了我將重用的對象聲明。我確定它們被聲明在想要使用它們的函數之上,然後在函數中儘早將它們設置爲它們需要的任何值。

我有一個單一的事件類型,我收集的網絡數據。我讓每個接收器決定它是否關心該事件。這只是消除了大量的樣板代碼,這些代碼必須寫成讓工廠創建每種不同的事件類型。

相關問題