1
我需要存儲Map<Integer, User>
以便按ID查找用戶。在使用Guice之前,我會創建一個UserManager
,它自己將地圖組合起來,並有2個函數來獲取和設置用戶。正在Guice中使用單個綁定存儲整個地圖被認爲是不好的做法?
爲了避免需要一個單獨的(可能是poltergeist)包裝類,是否認爲創建類如UserMap extends HashMap<Integer, User>
是不好的做法,並將其綁定到單例實例?然後,我可以直接注入UserMap
本身,無需擔心任何事情。這可能會違背構成而不是繼承......但考慮到它的唯一目的是作爲一張地圖嗎?
是否有任何其他合適的方式來存儲Map
(和其他)類型的全球訪問沒有靜態變量(即沒有靜態非Guice UserManager.get(23)
)?
我覺得我創建的幾十個「經理」類是沒有用的,只是提供了一個封裝到已有的函數。
這是一個很好的觀點。我覺得,如果只有'返回userMap.get(param);'的單行函數 - 這也是我的兩難選擇,否則就會違背最佳實踐。 –
@ThomasRyder不知道你爲什麼這麼認爲。您將它存儲在'HashMap'中是接口/類的用戶不必擔心的實現細節。 – jontro
@ThomasRyder映射是非常通用的,這應該是一個足夠好的理由,您希望它被封裝在任何DI上下文中。如果您需要具有相同泛型的其他地圖,該怎麼辦?你會註釋,好的,但是這樣會更不可讀。同樣在Java 8中,大多數管理者方法現在都被縮減爲一個長串的流調用,使得它們在技術上只有1行。只要去包裝,你不會有任何不好的意外。 –