标签:style blog http java color 使用
建立一个Java project如下图所示:
在Test.java:
//没用map的判断逻辑 int i = 1;//1,2,3 switch (i) { case 1: new RankLevel(); break; case 2: new RankNew(); break; }
可以看到没有使用map的情况下使用了好多的case分支;
再看看有map的情况:
IStatusByFind.java:
package s_test.StatusByFind; public interface IStatusByFind { public Object process(Object ...pram); }
RankLevel.java:
package s_test.StatusByFind; public class RankLevel implements IStatusByFind { @Override public Object process(Object... pram) { // TODO Auto-generated method stub System.out.println("hello:RankLevel"+pram); return null; } }
RankNew.java:
package s_test.StatusByFind; public class RankNew implements IStatusByFind { @Override public Object process(Object... pram) { // TODO Auto-generated method stub System.out.println("hellow:RankNew"+pram); return null; } }
在Test.java里面:
//有用map的判断逻辑 Map<Integer,IStatusByFind> map = new HashMap<Integer,IStatusByFind>(); map.put(1,new RankLevel()); map.put(2,new RankNew()); int input = 2;//1,2,3 if(map.containsKey(input)){ map.get(input).process(1); }
可以看到我们不需要加入更多的分支,只是建多了分支的处理类;
其实struts2框架的核心也就这么点代码,(加载xml文件到内存,放到map里面,然后每个url就是一个key,类比于上面的int input = 2;//1,2,3,都对应有相应处理的action类比于上面的RankLevel、RankNew)
源码在那里?
here:
com.opensymphony.xwork2.config.impl
而且告诉你,几乎所有的MVC框架都是这种处理方式
附录,Test.java:
package s_test.StatusByFind; import java.util.HashMap; import java.util.Map; public class Test { public static void main(String[] args) { //没用map的判断逻辑 int i = 1;//1,2,3 switch (i) { case 1: new RankLevel().process(1); break; case 2: new RankNew().process(1); break; } //有用map的判断逻辑 Map<Integer,IStatusByFind> map = new HashMap<Integer,IStatusByFind>(); map.put(1,new RankLevel()); map.put(2,new RankNew()); int input = 2;//1,2,3 if(map.containsKey(input)){ map.get(input).process(1); } } }
运行结果:
hello:RankLevel[Ljava.lang.Object;@1888759 hellow:RankNew[Ljava.lang.Object;@e53108
标签:style blog http java color 使用
原文地址:http://www.cnblogs.com/super-d2/p/3846445.html