2011-11-08 37 views
1

我工作的醫院應用程序,我需要表現出血型在每秒頁下拉,並正從他們的值到數據庫表 因爲血型不頻繁變化的實體,所以我們計劃創建一個帶有鍵值對的地圖,並在整個應用程序中提供該地圖,以便多次創建相同的地圖創建全球可用的地圖

我的問題是什麼可以成爲實現這一目標的最佳方式。一些快速選項來到我的頭腦是

  1. 在應用程序啓動時創建一個映射並將其放在應用程序上下文中
  2. 創建它讀取的屬性文件的實用程序類,並使用這些值填充地圖或簡單地創建地圖exisitng血型。

但我不確定這些選項有多有效,因爲網站在不久的將來必須處理大量的用戶點擊。

在此先感謝

回答

2

創建加載在系統啓動時或負荷值,當類加載這些值的實用程序類。通過這種方式創建類會帶來很多優勢:

  • 您可以通過編寫此類的測試用例來測試此類及其功能。 (檢查是否正在加載等)
  • 這使得你更少依賴上下文以及上下文如何工作。如果您由於某種原因需要更改應用程序服務器,那麼使您的應用程序更輕鬆。
  • 代碼變得更可讀的(BloodGroupUtils.getAll()相比Application.getContext().get("bloodGroups");或類似的東西。)

性能,這可能是一個快一點。不一定,但(我們需要檢查其它幾個系統使用/參數得出這個結論。)

+0

在應用程序上下文中的地圖會以同樣的方式靜態類加載 - 那可測試性將不會受到影響。每個應用程序服務器都以相同的方式訪問應用程序上下文;它是規範的一部分。 –

+0

我的意思是,測試班級將是微不足道的。測試靜態類和方法是有問題的,不是嗎? –

+0

測試靜態類不是比其他任何事情都困難。 *使用靜態類的測試代碼更加困難,並且是我們使用DI/IoC的一個主要原因 - ''BloodGroupUtils.getAll()'只使用*不同*靜態類。使用* map本身*的代碼應該與*檢索地圖的機制分離。 –

1

從靜態類或應用程序上下文檢索值將具有基本相同的性能。靜態類可能會微不足道,因爲您不必從應用程序上下文中獲取映射,但我無法想象它值得擔心。

+0

::感謝輸入它解決了我的目的! –

+0

@ user702325注意我和拉維之間的評論;它帶來了一個很好的觀點:保持*使用的代碼*映射與*檢索映射的機制解耦,無論是從靜態類,從應用程序上下文還是從其他任何地方。 –

+0

:我AREADY讀取和感謝提醒:) –