1

我有一个使用 URL 导航和 MVP 模式的 GWT Web 应用程序。对于每个 URL,我都有一个要调用的演示者。我有大约 20 位不同的演示者,要决定呼叫哪一位,我使用的条件如下

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。因此,对于上面示例中的最后一个条件,我将执行以下操作:

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

问题 :

1-哪一个是有效的,知道代码在客户端(JavaScript)?

2-还有其他选择吗?

4

1 回答 1

2

如果你只有20个左右,我真的不会太担心。我会使用 switch 语句,并尝试首先包含最有可能的视图。或者保留 if 语句,然后再次首先测试最可能的条件。但我想一个 hashmap 会给你一个平均 O(1),而 if 语句或 switch 会给你平均 O(n)

于 2012-07-31T15:49:41.950 回答