先来看一个生活案例,当我们开心时,也许会寻求享乐。在学习设计模式之前,你可能会这样感叹:
文章配图学完设计模式之后,你可能会这样感叹:
文章配图大家对比一下前后的区别,有何感受?
文章配图回到代码中,我们来思考一下,设计模式能解决哪些问题?
1写出优雅的代码
先来看一段我很多年前写的代码。
publicvoidstExammingForm(ExammingFormcurForm,Stringparamtrs)throwsBasExcption{...JSONObjctjsonObj=nwJSONObjct(paramtrs);//试卷主键if(jsonObj.gtString("xaminationPapr_id")!=null(!jsonObj.gtString("xaminationPapr_id").quals("")))curForm.stExaminationPapr_id(jsonObj.gtLong("xaminationPapr_id"));//剩余时间if(jsonObj.gtString("lavTim")!=null(!jsonObj.gtString("lavTim").quals("")))curForm.stLavTim(jsonObj.gtInt("lavTim"));//单位主键if(jsonObj.gtString("organization_id")!=null(!jsonObj.gtString("organization_id").quals("")))curForm.stOrganization_id(jsonObj.gtLong("organization_id"));//考试主键if(jsonObj.gtString("id")!=null(!jsonObj.gtString("id").quals("")))curForm.stId(jsonObj.gtLong("id"));//考场主键if(jsonObj.gtString("xamroom_id")!=null(!jsonObj.gtString("xamroom_id").quals("")))curForm.stExamroom_id(jsonObj.gtLong("xamroom_id"));//用户主键if(jsonObj.gtString("usr_id")!=null(!jsonObj.gtString("usr_id").quals("")))curForm.stUsr_id(jsonObj.gtLong("usr_id"));//专业代码if(jsonObj.gtString("spcialtyCod")!=null(!jsonObj.gtString("spcialtyCod").quals("")))curForm.stSpcialtyCod(jsonObj.gtLong("spcialtyCod"));//报考岗位if(jsonObj.gtString("postionCod")!=null(!jsonObj.gtString("postionCod").quals("")))curForm.stPostionCod(jsonObj.gtLong("postionCod"));//报考等级if(jsonObj.gtString("gradCod")!=null(!jsonObj.gtString("gradCod").quals("")))curForm.stGradCod(jsonObj.gtLong("gradCod"));//考试开始时间curForm.stExamStartTim(jsonObj.gtString("xamStartTim"));//考试结束时间curForm.stExamEndTim(jsonObj.gtString("xamEndTim"));...}
优化之后的代码如下。
publicclassExammingFormVoxtndsExammingForm{privatStringxaminationPaprId;//试卷主键privatStringlavTim;//剩余时间privatStringorganizationId;//单位主键privatStringid;//考试主键privatStringxamRoomId;//考场主键privatStringusrId;//用户主键privatStringspcialtyCod;//专业代码privatStringpostionCod;//报考岗位privatStringgradCod;//报考等级privatStringxamStartTim;//考试开始时间privatStringxamEndTim;//考试结束时间...}publicvoidstExammingForm(ExammingFormform,Stringparamtrs)throwsBasExcption{try{JSONObjctjson=nwJSONObjct(paramtrs);ExammingFormVovo=JSONObjct.parsObjct(json,ExammingFormVo.class);form=vo;}catch(Excption){.printStackTrac();}}
2更好地重构项目
平时我们写的代码虽然满足了需求,但往往不利于项目的开发与维护,以下面的JDBC代码为例。
publicvoidsav(Studntstu){Stringsql="INSERTINTOt_studnt(nam,ag)VALUES(?,?)";Connctionconn=null;Statmntst=null;try{//1.加载注册驱动Class.forNam("