2012-07-31 76 views
1

我有一個GWT Web應用程序,它使用URL來導航和MVP模式。對於每個URL我都有一個主持人被調用。我有大約20型動物主持人,並決定調用哪一個,我使用條件等哪個更有效率,使用HashMap或If語句導航

if (view.equals("vue1")){ 
    presenter = new presenter1(); 
}else if(view.equals("vue2")){ 
    presenter = new presenter2(); 
}else if(view.equals("vue3") || vue.equals("vue4") || vue.equals("vue5")){ 
    presenter = new presenter345(); 
} 
... 

我嘗試另一種選擇,這是在應用程序的啓動加載HashMap中。該地圖將視圖作爲關鍵字並將Presenter作爲值。但它變得複雜,因爲我經常有多個鍵(視圖)指向同一個Presenter。因此,對於上面我的例子中最後一個條件,我會做這樣的事情:

map.put("vue3",new Presenter345); 
map.put("vue4",new Presenter345); 
map.put("vue5",new Presenter345); 

問題:

1 - 哪一個是有效的,知道該代碼是在客戶端(JavaScript)?

2-是否有另一種選擇?

回答

2

如果你只有20個左右,我不會爲此擔心太多。我會使用switch語句,並嘗試首先包含最可能的視圖。或者保留if語句,並再次測試最可能的條件。但我認爲hashmap幾乎會給你一個平均的O(1),而if語句或開關會給你的平均值O(n)

+0

我終於使用了一個Map,因爲複雜度較低O(1)清晰度和可重用性。 – outellou 2012-09-02 15:54:34