百度

项目的程序开关的设计妙用

 

    开关:顾名思义,就是对某项东西的控制,控制其两种相反的特性,那么项目中的程序的开关是什么东西呢?

对于做后期维护的项目而言,每次的版本变更,保障不影响其他的,原有的功能的正常使用是很重要的,那么我们新增的这些程序,这些功能很有可能会影响到原有程序的正常运行或者稳定性,当遇到影响到原因程序的生产事故的时候怎么才能在最短时间内解决这个问题呢?那么项目程序的开关的感念就提出来了。

  项目程序开关是在你对于一段危险的,极容易出问题的代码之前的一个程序的逻辑的控制,比如,如果开关是打开的,那么后面的程序就继续执行,如果是关闭的,那么就不执行这段容易出问题的代码,这就是开关的作用。

  如何设计开关:

  我们可以把开关保存到数据库中,在用户登入系统的时候,去查询所有的开关,把这些信息存储到session中,当我们在执行到需要判定是否关闭的程序的时候就可以在session中获取这些开关的信息,判断开关是否是打开的。然后决定是否执行下面的程序。

  数据库比如下面:

  

  程序设计如下:

  系统登录的时候把开关信息放入到session中

  

 1             Map onoffMap = new HashMap();
 2             List onofflist_temp = executeSqlDAO.queryForList("SELECT-ON-OFF-DESCRIPTION", null);
 3             for(int i=0;i<onofflist_temp.size();i++){
 4                 OnOffDTO dto =  (OnOffDTO)onofflist_temp.get(i);
 5                 onoffMap.put(dto.getParam_name(), dto.getParam_value());
 6             }
 7             
 8             //--结束新增系统开关列表代码
 9             resMap.put("onoffMap", onoffMap);
10         session.setAttribute("onoffMap", onoffMap);

     使用的时候从session中拿出来

  

 1 Map onoffMap=  (Map) session.getAttribute("onoffMap");//获取到的是ArrayList ,上面的不一致,可以试试换成HashMap
 2         
 3         if (onoffMap!= null) {
 4             if(onoffMap.get("req_filter").toString().trim().equals("0")){
 5                 log.debug("获取到过滤器req_filter,值为:"+onoffMap.get("req_filter").toString());
 6                 chain.doFilter(request, response); 
 7                 return; 
 8             }else {
 9                 log.debug("获取到过滤器req_filter,值为:"+onoffMap.get("req_filter").toString());
10             }
11         }else{
12             chain.doFilter(request, response); 
13             return; 
14         }

 

posted @ 2015-06-24 10:31  雪季28  阅读(1441)  评论(0编辑  收藏  举报
百度