1.繁琐的数据库操作
不知道大家发现没有,无论什么语言,数据库操作永远是最繁琐的部分
//首先要获取conn
Connection connection=null;
Statement statement=null;
try{
connection=pool.getConnection();
statement=connection.createStatement();
ResultSet rs=statement.executeQuery("select * from xxx");
while(rs.next()){
...;
}
}catch(SQLException e){
logger.exception(e);
}finally{
if(statement!=null){
try{
statement.close();
}catch(SQLException e){
}
}
if(connection!=null){
try{
connection.close();
}catch(SQLException e){
}
}
这段代码真正核心部分其实就是对查询出来的ResultSet
进行操作而已,但是为什么要有这么多跟业务无关但是又不得不写的代码!我们可以不可以把具体的业务抽象出来,每次只需要写业务代码,而其他声明与异常捕获都统一放到一个函数里面去。
2.Template模式
在实际的代码编写过程中,我们经常会遇到一下很多大部分重复但是少部分又有区别的代码
public Data functionA(){
Data x;
流程1 //对变量x进行了一些操作
中间流程A//再次对变量x进行了一些操作
流程2//最后对变量x进行了一些操作
return x;
}
public Data functionB(){
Data x;
流程1 //对变量x进行了一些操作
中间流程B//再次对变量x进行了一些操作
流程2//最后对变量x进行了一些操作
return x;
}
上面两个函数大部分流程都是相同的,只有中间流程不同,而且中间流程与前后流程的变量都进行了一些操作。所以我们可以把中间流程单独剥离出来作为一个参数传进去
public Data commonFunction(Consumer<Data> function){
Data x;
流程1 //对变量x进行了一些操作
function.accept(x)//将中间流程作为一个参数传了进来
流程2//最后对变量x进行了一些操作
return x;
}
public Data functionA(){
return commonFunction(x->{
中间流程A//对变量x进行了一些操作
});
}
public Data functionB(){
return commonFunction(x->{
中间流程B//对变量x进行了一些操作
});
}
这样我们在写具体的代码的时候只需要关注真的中间流程而无需关注其他的通用的流程。
3. 数据库操作的简化与封装
- 我们平常使用数据库都是增删改查四个操作,其中增删改三个操作只需要执行SQL语句,而查操作需要返回Resul