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(不要重复自己)。