Repaso
English

¿Qué patrón hay detrás de list.sort(Comparator.comparing(Person::getAge))?

Opciones

  1. Strategy: el algoritmo es fijo; la regla de comparación se pasa desde fuera (Opción correcta)
  2. Singleton: solo existe un comparator en todo el programa
  3. Adapter: la lista se convierte primero a otra interface
  4. State: la lista cambia de comportamiento al cambiar su estado

Respuesta

Strategy: el algoritmo de ordenación es fijo, pero la regla de comparación es un objeto (o lambda) reemplazable que se pasa desde fuera

Por qué

Strategy: define una familia de algoritmos intercambiables detrás de una interface y deja que quien llama elija cuál usar.

Aquí Comparator es la interface strategy. La ordenación es la misma; pasas otro comparator (por edad, por nombre) y el comportamiento cambia sin modificar sort.

Con las lambdas de Java 8, una strategy suele ser solo una lambda.

Recuerda

Strategy = cambiar el comportamiento pasando un objeto o lambda.

Términos clave

Practica esta pregunta en Repaso