代码重构 实体转换-求教关于代码优化重构的问题

问题描述

求教关于代码优化重构的问题

关于代码重构:问题如下
各个科目都对应一个“考试”的实体bean,各个对象里部分属性是一致的,也存在不同的属性。经常遇到的情况是要写好几套代码。
如下面的代码片段

    if ("1".equals(subjectCode)) {
        LogUtil.info("获取数学");
        TestM testM = new TestM();
        testM.setTeachingCode(teachingVersionCode);
        testM.setGradeCode(gradeCode);
        testM.setTermCode(Integer.valueOf(termCode));
        testM.setQuesTestTypeCode(Integer.valueOf(testTypeCode));
        List<TestM> resultList = testService.getTestMList(testM,pageNo);
        int pageCount = testService.getPaperMCount(testM);
    }
    if ("2".equals(subjectCode)) {
        LogUtil.info("获取英语");
        TestE testE = new TestE();
        testE.setTeachingCode(teachingVersionCode);
        testE.setGradeCode(gradeCode);
        testE.setTerECode(Integer.valueOf(terECode));
        testE.setQuesTestTypeCode(Integer.valueOf(testTypeCode));
        List<TestE> resultList = testService.getTestEList(testE,pageNo);
        int pageCount = testService.getPaperECount(testE);
    }
    if ("3".equals(subjectCode)) {
        LogUtil.info("获取语文");
        TestC testC = new TestC();
        testC.setTeachingCode(teachingVersionCode);
        testC.setGradeCode(gradeCode);
        testC.setTerCCode(Integer.valueOf(terCCode));
        testC.setQuesTestTypeCode(Integer.valueOf(testTypeCode));
        List<TestC> resultList = testService.getTestCList(testC,pageNo);
        int pageCount = testService.getPaperCCount(testC);
    }

请教如何进行优化会比较好一点?

解决方案

1、看着你这里是set值后去获取信息了,这里的优化是:可以弄个构造方法,这样就不用总set了;
2、关于获取后赋值的,你可以这么做:JSONObject testm_obj = JSONObject.fromObject(test_str);
TestM TestM_vo = (TestM )JSONObject.toBean(testm_obj, TestM .class);
3、创建bean类时,可以把相同的属性写成父类

解决方案二:

就不能再这几个类上面建个 科目的父类,先把公共属性提出来再说。

时间: 2024-11-03 10:08:13

代码重构 实体转换-求教关于代码优化重构的问题的相关文章

C#中实体集合和实体转换成相应的string、XDocument、XElement、XDocument

一.前言 上篇随笔主要是针对于Xml的特性Attribute与实体之间的匹配与转换.该篇随笔主要内容为将对象转换成相应的Xml以及XElement.这2篇随笔以不同的方式对Xml进行转换与匹配,每种匹配都采用不同的角度进行操作.本文主要为对象实体的转换,下篇侧重于Xml的匹配. 二.Xml转换 2.1 实体集合转换Xml 实体集合转换Xml的方法为:public static string ToXml<T>(IList<T> entities, string rootName =

utf-8-文档里很多u utf8代码,怎么转换之后才能显示中文

问题描述 文档里很多u utf8代码,怎么转换之后才能显示中文 文档里很多u utf8代码,怎么转换之后才能显示中文. 解决方案 如果是在程序之外的话,用utf -8打开,再新建一个文档,讲打开的文档内容复制到新建的文档中,再保存为你想要的格式, 如果实在程序里,先用utf 8格式得到文件的流,再转换格式,再将文件流输出. 希望对你有帮助 解决方案二: 新建一个vc++或者java,把你的这些代码作为一个字符串粘贴进去,然后输出字符串,就转换了. 如果你的程序希望解析,最简单的是调用js脚本引擎

android-VB中base64编码如何转换到Android中,已有初步代码,但转换结果不一致

问题描述 VB中base64编码如何转换到Android中,已有初步代码,但转换结果不一致 没搞过VB 现在给我一串VB中的base64编码,移植到Android中,按照我的想法写好之后,发现编码之后的结果并不一样,请大家给我看看. VB: Set m_oXMLElement = m_oXMLDoc.createElement("TmpBase64") m_oXMLElement.dataType = "bin.base64" Public Function Enc

对象-c++一句代码不明白,求教。

问题描述 c++一句代码不明白,求教. #include using namespace std; struct Object{ int a; int b; }; void main() { Object& MyFunction(int b,int a=20); Object& rMyObj = MyFunction(5); cout<<"rMyObj.a="< delete &rMyObj; } Object& MyFunction(

如何用代码实现mp3转换asf格式

问题描述 请教各位我在做处理音频方面的转换问题,如何代码实现mp3转换asf格式有没相关的dll或方法实现呢?求求大家..帮帮忙

微型项目实践(6):Business层代码分析——实体类的生成策略

上一篇中,我们分析了实体类的基类Entity,这一篇中,我们就分析一下基于该类的实体类. 每一个实体类都会有两个文件组成,我们以BlogClass为例,该类包含两个文件:BlogClass.cs和 BlogClass.designer.cs,这非常类似VS自己生成的代码,更方便的是,VS还会自动把这两个文件折叠起 来,如图. 这两个文件中,BlogClass.designer.cs包含所有的生成代码:成员.属性等,而BlogClass.cs则只包 含一个类的定义,供我们填写代码使用. BlogC

PHP日期操作类代码-农历-阳历转换、闰年、计算天数等

  这是一个实用的PHP日期时间操作类,里面包括了公历-农历转换.转换成中文日期格式.计算农历相隔天数.根据阴历年获取生肖.获取阴历月份的天数.获取农历每年的天数.获取闰月.计算阴历日期与正月初一相隔的天数.计算2个公历(阳历)日期之间的天数.根据距离正月初一的天数计算阴历日期.获取天干地支纪年等,PHP日期操作类:Lunar.class.php代码如下: 001 002class Lunar { 003 var $MIN_YEAR = 1891; 004 var $MAX_YEAR = 210

solidworks实体转换钣金及转折命令该怎么?

  很多人觉得实体的创建要比曲面及钣金简单,所以这里介绍一下在solidworks中由实体转换为钣金的一些方法. 1.这里随意画一个台阶实体,并创建一个切口草图,完成以后使用转换钣金命令. 2.按步骤选择固定面及折弯连线,同时再做一个切口 3.切口的宽度可以按单个缝隙调整,如图所示 4.转换完成以后效果如图,注意开口位置不能选为折弯连线 5.顺带讲一下钣金的转折命令,在需要转折的板面位置做一条草图直线,按图所示选择转折深度 6.完成钣金转折后效果如图. 注意事项:切口草图不可以封闭,选择连线第一

一个Asp.Net的显示分页方法 附加实体转换和存储过程 带源码下载_实用技巧

之前自己一直用Aspnetpager控件来显示项目中的分页,但是每次都要拖一个aspnetpager的控件进去,感觉很不舒服,因为现在自己写的webform都不用服务器控件了,所以自己仿照aspnetpager写了一个精简实用的返回分页显示的html方法,其他话不说了,直接上代码.分页显示信息的实体类: 复制代码 代码如下: public class Pager    {        private string _firstPageText;        /// <summary>