一、使用模板模式優(yōu)化
使用模板模式主要是利用面向對象的繼承特征,即把代碼不變的部分放在超類,變化的部分放在子類
具體如下:
優(yōu)化查詢操作、區(qū)分變化和不變的部分:
1、sql和ResultSet的處理是變化部分,創(chuàng)建和釋放資源部分是不變部分。
2、提取超類,將不變的部分放入超類,變化的部分留給子類實現(xiàn)(可以寫成抽象方法)
實現(xiàn)超類的代碼如下:
public Object find(String sql, Object[] args) {
…
rs = ps.executeQuery();
if (rs.next()) return rowMapper(rs);
…
}
protected abstract Object rowMapper(ResultSet rs);
二、使用策略模式優(yōu)化
和模板模式的主要區(qū)別是變化的部分改為用接口實現(xiàn),而不是重寫方法。
1、優(yōu)化查詢操作,區(qū)分變化和不變的部分:sql和ResultSet的處理是變化的部分,創(chuàng)建和釋放資源部分是不變的部分。
2、提取接口封裝變化的部分。
3、主要操作代碼如下:
public Object find(String sql, Object[] args, RowMapper rowMapper) {
…
rs = ps.executeQuery();
if (rs.next())return rowMapper.mapRow(rs);
…
}
//回調的接口
public interface RowMapper {
public Object mapRow(ResultSet rs) throws SQLException;
}
在調用 find方法時可以用匿名類實現(xiàn)接口的方法:
find(sql, args, new RowMapper(){
public Object mapRow(ResultSet rs) throws SQLException {
//實現(xiàn)具體對象的分析結果的代碼
}
});