我有一个GWT Web应用程序,它使用URL进行导航和MVP模式。对于每个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作为值。但它变得复杂,因为我经常有多个键(视图)指向同一个Presenter。因此,对于上面示例中的最后一个条件,我将执行以下操作:
map.put("vue3",new Presenter345);
map.put("vue4",new Presenter345);
map.put("vue5",new Presenter345);
问题:
1-哪一个是高效的,知道代码在客户端(JavaScript)?
2-还有另一种选择吗?
答案 0 :(得分:2)
如果你只有20个左右,我真的不会那么担心。我会使用switch语句,并尝试首先包含最可能的视图。或者保留if语句,然后再次测试最可能的条件。但我想一个hashmap几乎会给你一个平均O(1),而if语句或开关会给你平均O(n)