http://hi.baidu.com/luodaijun/blog/item/ce1cccef6acb173eadafd518.html
一. 看一段冗余的代码
public String login(HttpServletRequest request){
OperatorService operatorService = new OperatorService();
WebContext webContext= request.getSession().getAttribute("WEB_CONTEXT_KEY");
Connection conn=null;
try{
Conection conn =DBManager.getConnection();
if(webContext.getOperatorName.equals("123")){
// 登陆成功
}
}catch(Throwable t){
//记录日志
//跳转到统一的错误页面,不能让用户看到异常页面
//关闭Connection
if(conn!=null){
try{conn.close();}cath(SQLException ex){}
}
}
}
public String logOut(HttpServletRequest request){
OperatorService operatorService = new OperatorService();
WebContext webContext= request.getSession().getAttribute("WEB_CONTEXT_KEY");
try{
Conection conn =DBManager.getConnection();
operatorService.logout();
request.getSession().invalidate();
}catch(Throwable t){
//记录日志
//跳转到统一的错误页面,不能让用户看到异常页面
//关闭Connection
if(conn!=null){
try{conn.close();}cath(SQLException ex){}
}
}
}
二、可以看到,红色部分代码完全是冗余的,下面用回调方法简化这部分代码
1.先定义一个回调抽象类
public abstract class AppCallback {
/**
* 回调执行方法
*
* @return
*/
public String execute() {
Connection conn=null;
try{
conn= DBManager.getConnection();
this.doLogic(conn);
catch(Throwable t){
//记录日志
//跳转到统一的错误页面,不能让用户看到异常页面
//关闭Connection
if(conn!=null){
try{conn.close();}cath(SQLException ex){}
}
}
}
/**
* 业务代码,由子类实现
*
* @param xmlResponse
* @param webContext
*/
public abstract void doLogic(Connection conn);
}
三、用回调类简化代码
public String login(HttpServletRequest request){
OperatorService operatorService = new OperatorService();
WebContext webContext= request.getSession().getAttribute("WEB_CONTEXT_KEY");
new AppCallback(){
public void doLogic(Connection conn){
// conn.executeQuery()
}
}.execute();
}
public String logOut(HttpServletRequest request){
OperatorService operatorService = new OperatorService();
WebContext webContext= request.getSession().getAttribute("WEB_CONTEXT_KEY");
new AppCallback(){
public void doLogic(Connection conn){
// conn.executeQuery()
}
}.execute();
}
当然,通过回调方法,约束并简化了代码,比如这里将异常捕捉逻辑封装起来,对程序编码也是一种规范,可以防止不好程序编写方式,比如忘记关闭Connection,把异常和关闭Connecton都放到回调类里,用户再也不必担心connection 的关闭了
分享到:
相关推荐
一片来自互联网的论文(具体哪个网站不清楚),据说是研究生毕业论文《冗余代码缺陷检测方法》,大家共同学习。
一种静态分析与知识图谱结合的Java冗余代码检测方法
去除tppabs冗余代码,轻松搞定
HTML冗余代码清除.pdf
JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+论文)JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+论文)JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+...
JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+论文) JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+论文) JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码...
java毕业设计——java基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+论文).zip java毕业设计——java基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+论文).zip java毕业设计——java...
JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+LW)JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+LW)JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+LW)...
JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+LW) JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+LW) JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+LW)...
javaweb毕业设计-JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+lw)(可做课程设计).rarjavaweb毕业设计-JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+lw)(可做课程设计)....
基于Matlab的并行循环冗余校验Verilog代码自动生成方法.pdf
CRC冗余校验,使用java实现,共同学习!!
担心冗余代码,一行注解搞定运行时权限,demo提供了两种方式:注解反射、apt技术,aop等有时间再加
JAVA开发JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+论文) JAVA开发JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+论文)
**JAVA基于纠错码的冗余技术研究——EVENODD码的设计与实现** 本资源提供了一个基于JAVA编程语言的纠错码冗余技术研究项目,专注于EVENODD码的设计与实现。该项目旨在帮助用户在数据存储和传输过程中提高数据的可靠...
JAVA基于纠错码的冗余技术的研究——EVENODD码 的设计与实现(源码+论文)
JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+lw).rarJAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+lw).rarJAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源...
代码冗余的原因多种多样,从未使用的变量到未完成的变更,再到废弃的代码; 冗余代码会产生一系列的影响,包括源代码臃肿、可靠性及可维护性降低。在某些情况下,死代码也会影响性能; 为了检测冗余代码,作者开发了...