- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
浅析Java模板方法的一种使用方式
为什么我会想到使用模板方法呢?
在日常开发中,我们经常需要使用编程式事务来解决一些实在的业务问题。以Hibernate框架为例(其实对于ORM框架来说,都大同小异。我们公司使用的是Hiberante,所以这里就以Hibernate为例了),我们实现一个编程式事务如下:
SessionFactorysessionFactory=(SessionFactory)applicationContext.getBean(sessionFactory);
Sessionsession=sessionFactory.openSession();
try{
session.beginTransaction();
Stringsql=updatetablesetA=:awhereid=:id;
session.createNativeQuery(sql)
.setParameter(a,a)
.setParameter(id,id)
.executeUpdate();
session.getTransaction().commit();
}catch(Exceptione){
session.getTransaction().rollback();
}finally{
session.close();
}
我们看上述的代码是不是有一种很乱的感觉,还要自己去写try{}catch{}finally{}。而且当我们代码中有很多地方都应用了编程式事务的话,那么我们的代码会显得有些臃肿。尤其对于我这种强迫症患者来说,哈哈!!
既然如此,我们肯定要想一种方式去优化一下,至少让它看起来更优美一些。我这里选择使用模板方法来改造一下。
什么是模板方法设计模式?
模板方法说白了就是将一段代码模板化,将通用的代码段抽取出来,并提供一些自定义的接口去定制的特定位置的某些业务功能。
根据我的理解,模板方法的核心思想就是重写。我们在模板中的指定位置提供一个外部可编辑的接口,让调用者可以根据需求去随意重写这个接口来达到他的目的。
其实在Spring中也广泛使用的模板方法,当我们学习Spring源码的时候会发现,实际上Bean的生命周期中就使用了模板方法。我们可以根据自己的需求在Bean生命周期的各个阶段去做一些事情。
代码优化
首先我们先维护一个抽象的模板类,这个类里包含了三个公开的方法,用来提供为调用者去定制使用。
publicabstractclassTransactionManagerTemplate{
*处理事务中的实际要处理的业务代码
publicvoidhandle(){}
*异常处理
publicvoidexceptionHandle(){}
*finally处理
publicvoidfinallyHandle(){}
}
然后我们创建一个事务管理器,封装一个runTransaction方法,里面就包含了上面那边不忍直视的代码。然后我们将Session和抽象的模板类作为参数传入
并且将抽象的模板类中的三个公开方法填入到try{}catch{}finally{}中的各个位置。
@Component
publicclassTransactionManager{
@Autowired
privateApplicationContextapplicationContext;
*默认SessionFactory
publicstaticfinalStringDEFAULT_SESSION_FACTORY=sessionFactory;
您可能关注的文档
最近下载
- 村干部公务员考试资料.doc VIP
- 2025年中考初中英语动词的时态语法讲解复习课件.pptx VIP
- 2024年幼儿园教师选调进城考试模拟试题1(附参考答案).doc
- 第5讲 基片集成波导 I.ppt VIP
- (高清版)DB44∕T 2568-2024 《灌区信息化设计导则》.pdf VIP
- GB50810-2012 煤炭工业给水排水设计规范.docx VIP
- 2025年综合薪酬福利体系优化策略与实践.doc
- 银行业智能风控与反欺诈系统建设方案.doc VIP
- nm248 1 sectools secimage工具用户指南.pdf VIP
- Q∕GDW 11309-2014 变电站安全防范系统技术规范.docx VIP
文档评论(0)