可以說我有一個枚舉類 - ConfigElement
其中有一些成員喜歡GENERAL_CONFIG("General Configuration")
,TRANSIT_TIMES("Transit times")
。強制靜態映射中通用接口的具體類的映射
所有這些配置元素的個人類,實現公共接口的ConfigElementOP
,例如
public class TransitTimesOp implements ConfigElementsOp{
//implementation of interface methods
}
這些單獨的類定義某種行爲是特定於它們。
現在,應用程序的控制器只是獲取特定的ConfigElement
,然後在工廠的幫助下,找出具有相應行爲的類並相應地使用它。
目前,我廠只是ConfigElement
和其行爲的類之間的靜態地圖,像
public static Map<ConfigElement, ConfigElementsOp> ConfigElementBehaviourMap =
new HashMap<ConfigElement, ConfigElementsOp>();
ConfigElementBehaviourMap.put(ConfigElement.TRANSIT_TIMES, TransitTimesOp.class);
...
我有兩個問題與此:
也是本作的正確的設計廠?對我來說似乎更加混亂,因爲任何新元素和行爲的添加都需要在多個位置進行更改,並且將其包含在此靜態映射中的缺失將會被編譯器無視地忽略。假設我們使用這種工廠設計(靜態映射),是否有強制爲配置元素定義的任何新類都進入此映射的任何方法。而任何這樣的錯過,將是一個編譯時錯誤。
用法可以通過以下方式描述 - 各種控制器將需要此枚舉的不同行爲映射。因此,可以說--UI控制器將有一個地圖說明如何顯示一個特定的配置元素,串行器將有另一個可供使用的地圖,它是ConfigElement和它的特定序列化器之間的映射。特定的控制器在工作時將從其地圖中獲取ConfigElement的相應行爲並使用它。
在此先感謝。
此ConfigElement枚舉列表由其中一個依賴包給出,而且枚舉也可以在其他地方使用。 – kshtjsnghl 2011-01-09 19:25:56
在這種情況下,地圖是一個非常好的解決方案。在Java中HashMaps閃電般快,所以應該沒有問題。 – Daniel 2011-01-09 19:28:12