重构—利用反射合并函数

先看下重构前的测试用例:

 

public class TestLogin extends TestCase{
  private ButtonManagerIbatis buttonManagerIbatis;
  
   protected void setUp() throws Exception {
      context = getContext();
      buttonManagerIbatis = (ButtonManagerIbatis)context.getBean

("buttonManagerIbatis");
      super.setUp();
    }
    ApplicationContext context ;
    protected ApplicationContext getContext() {  
       String[] paths = {"/context/application_context.xml"};
       ApplicationContext  ctx = new ClassPathXmlApplicationContext(paths);
       return ctx;
    }
  
  /** *//**
   * 测试:登陆后读取权限信息,并且封装为树形结构
   */
   public void testLongin(){
     List<Button> list = buttonManagerIbatis.getAuth("0000");
     testall(list);
     
   }
    Map<String,Model> modelmap = new HashMap<String,Model>();
    Map<String,Menu> fmenumap = new HashMap<String,Menu>();
    Map<String,Menu> smenumap = new HashMap<String,Menu>();
    
    public void testall(List<Button> buttonList){
      for(Button button :buttonList){
        test(modelmap,button);
      }
      for(Model model : modelmap.values()){
        test2(smenumap,model);
      }
      for(Menu menu : smenumap.values()){
        test3(fmenumap,menu);
      }
      for(Menu fmenu :fmenumap.values() ){
        System.out.println(fmenu.getMenuName());
        for(Menu smenu :fmenu.getMenus() ){
          System.out.println(" "+smenu.getMenuName());
          for(Model model : smenu.getModels()){
            System.out.println("  "+model.getName());
            for(Button b:model.getButtons()){
              System.out.println("   "+ b.getButtonDesc());
            }
          }
        }
      }
    }
  
    public void test(Map<String,Model> modelmap , Button b){
      Model m = b.getModel();
      if(!modelmap.containsKey(m.getId()))
        modelmap.put(m.getId(),m);
      modelmap.get(m.getId()).getButtons().add(b);
    }
    
    public void test2(Map<String,Menu> menumap , Model m){
      Menu menu = m.getMenu();
      if(!menumap.containsKey(menu.getId()))
        menumap.put(menu.getId(),menu);
      menumap.get(menu.getId()).getModels().add(m);
        
    }
    
    public void test3(Map<String,Menu> menumap , Menu smenu){
      Menu fmenu = smenu.getMenu();
      if(!menumap.containsKey(fmenu.getId()))
        menumap.put(fmenu.getId(),fmenu);
      menumap.get(fmenu.getId()).getMenus().add(smenu);
    }
    
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索menu
, applicationcontext
, public
containskey
c重构函数、函数重构、php 重构函数、js函数重构、python 函数重构,以便于您获取更多的相关知识。

时间: 2025-01-28 03:57:36

重构—利用反射合并函数的相关文章

利用反射从XML构造VO

xml     反射使您的程序代码能够接入装载到 JVM 中的类的内部信息,允许你编写与执行时,而不是源代码中选定的类协作的代码.这使反射成为构建灵活的应用的主要工具.        首先观察下面的 XML 文件:  <?xml version = '1.0' encoding = 'gb2312'?><ROOT>   <ARSUBITEM num="1">      <C_ITEMNO>300200500009</C_ITEMNO

利用反射动态调用类成员

动态 (C#)利用反射动态调用类成员 使用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): public object InvokeMember( string name, BindingFlags invokeAttr, Binder binder, object target, object[] args ); 参数 name String,它包含要调用的构造函数.方法.属性或字段成员的名称. - 或 - 空字符串 (""

(C#)利用反射动态调用类成员

动态 (C#)利用反射动态调用类成员 使用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): public object InvokeMember( string name, BindingFlags invokeAttr, Binder binder, object target, object[] args ); 参数 name String,它包含要调用的构造函数.方法.属性或字段成员的名称. - 或 - 空字符串 (""

.Net/C#: 利用反射编写通用的 rss 2.0 的 reader

rss /* .Net/C#: 利用反射编写通用的 rss 2.0 的 reader 最近在写一个 Simple Rss Reader 网上找到现成代码两种: 1.代码简单的,但不够通用 (如: 本站的一些专用 rss reader) 2.代码复杂的,但没有足够时间去消化 (如: rssbandit) 遂自己动手: 由于 rss 的基本属性大家都有! 但一些特殊不通用属性,如: slash:comments wfw:comment wfw:commentRss trackbackping 不一定

利用反射,实现动态调用winform窗体!!

动态 实用前提:在WinForm程序中,通过主窗体的Menu打开不同的窗体我以前的做法:在Menu的Click事件中,创建打开窗体的对象实例这样的缺点,我不说了:)看看利用反射动态调用窗体对象的方法:private void CreateForm(string strName){ this.Cursor = Cursors.WaitCursor; string path=AssemblyName;//项目的Assembly选项名称 string name=strName; //类的名字 Form

C#利用反射简化给类字段赋值

 这个例子主要的思路是建立一个类和数据库查询语句的字段结构是一致的 然后利用反射,直接用数据字段名称进行拼凑,给类对象的字段进行赋值 1.类的定义 namespace CCB_Donet.ClassFolder { public class FieldRuleInfo { public string gStrFNo; public string gStrFName; public string gStrFLock; public string gStrFCaption; public strin

利用WPS表格函数自动汇总中考报名册

         一年一度的中考报名已经开始了,招生办小牛又在为汇总全县中考报名情况而忙碌着,一会儿"筛选",一会儿"排序",弄得满头大汗,两眼发直.看到他这副狼狈像,我向他提议利用WPS表格函数自动汇总,并手把手地把函数设置的方法告诉了他. 一.建立报名表册 在全县统一的中考报名表格中输入学生报名信息,若是县级招办,直接将各乡镇上报的数据复制到表格中即可.(如图一) 按照县的要求,填报高中的学生,在高中栏内填"1",大专填"2&quo

WPS表格技巧:利用 “邮件合并”功能批量填写准考证

在学校的日常工作中,经常会有诸如填写准考证.入学通知书和毕业证之类的工作,这些工作枯燥乏味,且工作量大,手工操作很容易出现错误,带来不必要的麻烦.其实,微软Office办公组件中的WORD和金山WPS 文字2007均有"邮件合并"这一功能,熟练掌握这一功能,将使我们批量填写各种证件变得十分轻松.下面,我以批量填写中考准考证为例,谈谈在WPS 文字2007中如何使用"邮件合并"功能. 一.建立"准考证"模板 打开WPS文字2007,按照毕节地区招生

php利用反射实现插件机制的方法

 本文实例讲述了php利用反射实现插件机制的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: <?php /**  * @name    PHP反射API--利用反射技术实现的插件系统架构  */    interface Iplugin{        public static function getName();    }    function findPlugins(){        $plugins = array();        foreach (get_de