Está en la página 1de 9

Lambdas.

Parte 2
Lambdas. Ejecución condicional diferida

• Un caso muy habitual es querer sacar trazas para depurar.

• Como el rendimiento de una aplicación es una tema crítico


en producción, la generación de trazas la condicionamos a si
estamos en desarrollo o en producción.

2
Lambdas. Ejecución condicional diferida

• Pero lo anterior presenta inconvenientes.

• Lógicamente, en un programa mediano o grande tendríamos


muchos condicionales para generar trazas condicionalmente,
por lo que es preferible crear un método al que le pasemos la
información a trazar y allí se realice el condicional:

3
Lambdas. Ejecución condicional diferida

• Pero seguimos teniendo problemas: la evaluación de la


expresión que pasamos como argumento al método, siempre
va a ser evaluada, independientemente de si las trazas están
habilitadas o no.

4
Lambdas. Ejecución condicional diferida

• Gracias a las lambdas podemos refactorizar el código


anterior.

• En vez de llamar al método pasando un String, pasamos


un Supplier<String>

• Con esto conseguimos que el formateo del mensaje solo se


produzca si las trazas están habilitadas.

5
Lambdas. Patrón Factory

• Antes de Java 8, una implementación típica del patrón Factory


podría ser la siguiente:
– Una clase OfferFactory con un método createOffer() que
devuelve instancias de Offer en función de una Enum.
– Una clase cliente, podría crear listas de ofertas, recorrerlas y
procesarlas.

in ()
ma

6
Lambdas. Patrón Factory

• La implementación anterior presenta ciertos


inconvenientes:
– Ante un nuevo tipo de oferta vamos a tener que modificar
el switch para contemplar ese nuevo tipo.
– Si queremos crear paquetes de ofertas vamos a tener que
crear una factoría para este propósito.

7
Lambdas. Patrón Factory

• Al margen del patrón Factory, un par de mejoras que


podemos hacer:
– Inferencia de tipos; podemos usar var para declarar variables
(útil si los nombres son largos, con mapas)
– Nuevos métodos para la creación de colecciones.

Java 11 →

← Java 9

Pre Java 9 →

8
Lambdas. Patrón Factory
• Volviendo a la implementación anterior de la factoría de ofertas.
Desde Java 11 se pueden crear de forma dinámica factorías.
• Analicemos el siguiente código detenidamente:

También podría gustarte