¿Qué patrón hay detrás de list.sort(Comparator.comparing(Person::getAge))?
Opciones
- Strategy: el algoritmo es fijo; la regla de comparación se pasa desde fuera (Opción correcta)
- Singleton: solo existe un comparator en todo el programa
- Adapter: la lista se convierte primero a otra interface
- 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.