为什么一定要学习设计模式

北京看白癜风最好的地方 https://baijiahao.baidu.com/s?id=1727264872422082917&wfr=spider&for=pc

先来看一个生活案例,当我们开心时,也许会寻求享乐。在学习设计模式之前,你可能会这样感叹:

文章配图

学完设计模式之后,你可能会这样感叹:

文章配图

大家对比一下前后的区别,有何感受?

文章配图

回到代码中,我们来思考一下,设计模式能解决哪些问题?

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("


转载请注明:http://www.aierlanlan.com/tzrz/2542.html