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