一. 看一段冗余的代码
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 的关闭了
分享到:
相关推荐
"Android-在回调中接收Activity结果没有任何样板代码"的主题,就是关于如何避免这些冗余代码,提升代码的简洁性。 在Android API 16及之后的版本,系统提供了`ActivityResultContracts`和`ActivityResultLauncher`...
2. **Optimizer**: 它通过消除冗余代码、内联方法、常量折叠等技术来优化字节码,提高代码执行效率。在Java 8中,这可能包括对lambda表达式、方法引用来优化。 3. **Obfuscator**: ProGuard 对代码进行重命名,使得...
这在处理事件处理或回调函数时非常有用。 7. **类型推断增强**:Java 8增强了类型推断机制,使得编译器能更准确地推断出局部变量的类型,从而减少冗余的类型声明。 8. ** Nashorn JavaScript引擎**:Java 8内置了...
1. **不做无谓之事**:避免不必要的操作和计算,减少冗余代码,确保每行代码都有其存在的价值。 2. **节约内存使用**:合理管理内存资源,避免过度分配和频繁回收,以保持系统稳定性和响应速度。 #### 实践技巧 1....
λ表达式的主要优势在于其简洁性,它可以减少代码量,消除冗余,提高代码的可读性。在处理高阶函数,如映射(map)、过滤(filter)和reduce等操作时,λ表达式显得尤为高效。对于并发编程,λ表达式可以方便地定义...
1. **Lambda表达式**:Lambda表达式是一种简洁的函数式编程元素,允许将代码块作为参数传递给方法,简化了对集合的操作和其他回调机制。它通过消除冗余的匿名内部类,使得代码更加紧凑和易读。 2. **函数式接口**:...
"noiseless"项目是一个针对Java平台的开源库,它的核心目标是实现“无噪音代码”,即在编程过程中减少不必要的、冗余的或者干扰性的代码,提高代码的可读性和维护性。这个项目可能是通过提供一系列工具、库或者编程...
为了解决这一问题,"LiteUtilities"应运而生,它是一个专为Android开发者设计的工具库,旨在通过去除冗余和重复的样板代码,提高开发效率,让开发者能够更专注于核心业务逻辑。 LiteUtilities的核心功能在于提供了...
- Kotlin 的语法比 Java 更加简洁明了,去除了冗余和繁琐的部分,提高了代码的可读性和编写效率。 - 例如,在 Kotlin 中定义一个简单的函数,只需要使用 `fun` 关键字即可,而无需指定返回类型如果为 `Unit` 类型...
1. **消除复杂接口与回调方法**:EJB2.1要求开发者创建多个接口并实现冗余的回调方法,而EJB3.0则简化了这一流程,消除了不必要的Remote、Home、EJB接口,大大减少了开发工作量。 2. **采用POJO模型**:实体Bean在...
Kotlin的语法设计十分直观,它消除了许多Java中的冗余代码,如显式类型声明和空指针异常。例如,变量声明可以使用var或val关键字,前者表示可变变量,后者表示不可变变量。Kotlin也支持函数式编程特性,如高阶函数、...
4. **拦截方法调用**:子类中重写了父类的所有非final方法,当调用这些方法时,会通过MethodInterceptor回调实现自定义逻辑。 在实际应用中,CGLib通常与AOP框架结合使用,如Spring AOP,它可以拦截并增强方法的...
协程使开发者可以编写顺序式的异步代码,避免回调地狱,提高代码的可读性和可维护性。 6. **Anko库**:在Android开发中,Anko是Kotlin的一个流行库,提供了一系列的DSL(领域特定语言)来简化XML布局的替代、日志...
5. **去除冗余功能** "去掉了一些乱七八糟的东西"可能指的是简化了控件,仅保留基本的开关功能。这有助于提高代码的可读性和性能,同时使控件更易于集成和复用。 6. **设置初始值** 自定义Switch控件应允许开发者...
1. **消除了不必要的接口**:不再需要Remote, Home, EJB接口及回调方法实现,减少了代码冗余。 2. **POJO模型**:实体Bean采用简单Java Bean实现,无需依赖容器即可运行和测试。 3. **O/R Mapping技术**:通过ORM...
这在需要一次性使用的类或接口实现中非常有用,尤其在事件处理和回调机制中。 ### 9. 数组校验(Array Covariance) 在JDK1.5之前,数组的类型检查相对较弱,可能导致类型不匹配的问题。1.5版本增强了数组的类型...
我们将在SurfaceHolder的回调方法中执行绘制操作,包括清除屏幕、绘制当前方块和已固定的方块。 游戏的交互部分也很重要。用户可能需要控制方块的左右移动和快速下落。Android提供了多种事件监听机制,如...
此类通常包含检查权限状态、请求权限以及处理回调的方法。 - ` ActivityCompat` 和 ` Dexter`:`ActivityCompat`是Android Support Library的一部分,用于处理权限请求;`Dexter`是第三方库,简化了权限请求的流程...