Spring框架中设计模式之 外观模式

在 Spring 中,外观模式主要应用在各种模板类中,比如 JdbcTemplate 和 RestTemplate。外观模式的目的是将复杂的系统或接口封装起来,向外提供简单的接口,使得客户端能够更容易地使用这些功能。

下面是一个使用外观模式的示例代码:

public class JdbcTemplate {
    private DataSource dataSource;

    public JdbcTemplate(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    public void execute(String sql) {
        Connection conn = null;
        Statement stmt = null;
        try {
            conn = dataSource.getConnection();
            stmt = conn.createStatement();
            stmt.execute(sql);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            try {
                if (stmt != null) {
                    stmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

在上面的代码中,JdbcTemplate 是一个外观类,它封装了数据库操作的复杂性。它的 execute 方法接收一个 SQL 语句作为参数,并将其执行。在方法内部,它通过 DataSource 对象获取 Connection 对象,再通过 Connection 对象获取 Statement 对象,并最终执行 SQL 语句。在方法结束时,它还会释放资源,确保数据库连接不会被泄露。

在这个示例中,JdbcTemplate 就是一个典型的外观类。它将数据库操作的细节封装起来,向外提供了一个简单的接口。客户端只需要传入 SQL 语句,就能够执行数据库操作。如果不使用 JdbcTemplate,客户端需要自己获取数据库连接,创建 Statement 对象,执行 SQL 语句,还要注意资源的释放等一系列复杂的操作,使用起来就很麻烦。而使用 JdbcTemplate,客户端只需要关注 SQL 语句本身,就能够轻松地完成数据库操作。