一、什么是模板方法模式
定义一个操作中的算法骨架,将一些步骤的具体实现延迟到子类当中去实现。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定的步骤。
二、模板方法模式的使用场景
- 在多个子类中拥有相同的方法,而且逻辑相同时,可以将这些方法抽出来放到一个模板抽象类中。
- 程序主框架相同,细节不同的情况下,也可以使用模板方法。
三、模板方法模式的写法举例
下面我们以一个使用 JDBC 查询 MySQL 数据库的例子来介绍一下模板方法模式,首先我们来看一下最初版的实现:
public class UserQuary { private static final String URL = "jdbc:mysql://xxx.xxx.xxx.xxx:3306/jdbc"; private static final String USER_NAME = "xxxx"; private static final String PASSWORD = "xxxxxx"; public List<User> quary(String sql, List<Object> params) throws Exception { // 1.建立连接 Connection connection = DriverManager.getConnection(URL, USER_NAME, PASSWORD); // 2.建立Statement,并将数据注入预编译sql当中 PreparedStatement statement = connection.prepareStatement(sql); for (int i = 0; i < params.size(); i++) { statement.setObject(i + 1, params.get(i)); } // 3.执行sql,获取结果 ResultSet resultSet = statement.executeQuery(); // 4.处理查询结果,将查询结果转换为对应的User对象 List<User> users = new ArrayList<>(); while (resultSet.next()) { User user = User.builder() .id(resultSet.getLong("id")) .name(resultSet.getString("account_id")) .age(resultSet.getInt("account_name")) .build(); users.add(user); } // 5.资源关闭 resultSet.close(); statement.close(); connection.close(); // 返回结果 return users; } }