模板方法模式:定义一个算法框架,将具体实现延伸到具体的子类中,重而可以在不改变算法框架的基础上,重定义改算法。 通俗些就是我们在子类中实现了一些不变和可变的方法,这些不变和可变的方法会在子类中重复出现,我们就可以把这些不可变的方法,迁移到单一的类里面,形成一个模板类,提高代码的重复使用,让子类摆脱重复不可变方法的纠缠
很多dao层框架就用到了模板方法模式,例如spring 的jdbcTemplate
public int update(String namedsql, List<Object> paramBean) {
return this.jdbcTemplate.update(namedsql, paramBean.toArray());
}
public int update(String namedsql) {
return this.jdbcTemplate.update(namedsql);
}
public int commonUpdate(String namedsql, List<Object> paramValue) {
return this.jdbcTemplate.update(namedsql, paramValue);
}
public T getJavaBean(String sql, Class<T> retType) {
try {
RowMapper<T> rowMapper = new BeanPropertyRowMapper<T>(retType);
return this.jdbcTemplate.queryForObject(sql, rowMapper);
} catch (IncorrectResultSizeDataAccessException e) {
LOG.error(e, e.fillInStackTrace());
e.printStackTrace();
return null;
}
}
public List<T> getList(String namedSql, List<Object> paramValue, Class<T> retType) {
RowMapper<T> rowMapper = new BeanPropertyRowMapper<T>(retType);
return this.jdbcTemplate.query(namedSql, rowMapper, paramValue.toArray());
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public List getListObject(String sql, List<Object> paramValue, Class retType) {
return this.jdbcTemplate.queryForList(sql, retType, paramValue.toArray());
}
jdbcTemplate 模板类里面定义好了增删改 查的一系列的方法,到自己封装的Dao工具类具体实现这些方法