Lambdas 和执行模式

在简单的场景中,有几个使用 lambdas 作为 FunctionalInterface 的好例子。可以通过 lambdas 改进的一个相当常见的用例是所谓的 Execute-Around 模式。在此模式中,你有一组标准的设置/拆卸代码,这些代码是围绕特定于用例的代码的多个场景所需要的。一些常见的例子是文件 io,数据库 io,try / catch 块。

interface DataProcessor {
    void process( Connection connection ) throws SQLException;;
}

public void doProcessing( DataProcessor processor ) throws SQLException{
    try (Connection connection = DBUtil.getDatabaseConnection();) {
        processor.process(connection);
        connection.commit();
    } 
}

然后用 lambda 调用这个方法,它可能看起来像:

public static void updateMyDAO(MyVO vo) throws DatabaseException {
    doProcessing((Connection conn) -> MyDAO.update(conn, ObjectMapper.map(vo)));
}

这不仅限于 I / O 操作。它适用于类似的设置/拆除任务适用于任何微小变化的任何场景。这种模式的主要好处是代码重用和强制执行 DRY(不要重复自己)。