2014-07-07 14 views
-1

我不完全確定如何描述這個標題最有可能不太具有描述性,但在這裏:我有一個'佈局'對象的集合從配置文件加載啓動並用于格式化用戶消息。我將這些對象存儲在一個hashmap中,並將它們的名稱作爲關鍵字,因爲這是大多數情況下它們將被檢索到的方式,但是,我不確定我應該在哪裏找到該地圖以及隨附的添加和刪除方法。我應該將它作爲靜態變量/方法添加到佈局類中還是創建一個新類來保存它?在哪裏舉行對象的收集Java

+2

您真的需要提供更多關於您正在編寫的程序的信息,因爲地圖的存儲位置很大程度上取決於您的項目的結構以及代碼的哪些部分需要訪問該地圖。 – forgivenson

+0

聽起來像它是一個配置參數,所以它應該無處不在...但它取決於。 –

回答

1

您可以創建一個包含地圖並在任何地方使用它的單身物件 - examples

0

我認爲最好有一個新的類,其中包含所有的數據/方法,並且如果您希望可以爲您需要的所有類共享這個靜態變量,則爲此類保留一個靜態變量。一個單身人士。

0

我會建議一個反轉的依賴而不是一個普通的單例模式。

在啓動時創建一個佈局對象 - 它的責任是接受數據並生成用戶消息。然後將該對象作爲屬性或構造函數參數傳遞給其所有用戶。

這允許簡單地測試佈局及其用戶 - 單獨和獨立。

+0

與單身人士不一樣嗎?正如您所提到的「在啓動時創建單個佈局對象」。 – Bananan

+0

是的,沒有。通常,單例模式是用一個static :: instance()調用來實現的。我建議將單引用引用傳遞並存儲在多個對象中。這使得分開測試每個對象變得更加容易。 – Arkadiy

0

不知道多少我會說你最好的選擇是創建一個新類來容納這些,確保你完全隱藏了LayoutLoader類(hashmap支持的,從文件加載等)的實現/內部。這並不比在佈局類中直接使用靜態變量更重要,這會提高可測試性和可擴展性。在某些時候,您可能想要添加各種方法來加載佈局(從文件,內存等),因此您可能會得到各種各樣的LayoutLoader實現。

但是現在,您可能只是在某處持有對該對象的靜態引用,並根據需要在將來重構。