DavidZambrano226 / space-invader-game-java

1 stars 0 forks source link

Patron Comportamental 1 -Strategy #21

Open malejaip opened 1 year ago

malejaip commented 1 year ago

En el caso de comparar valores y ordenar, el patrón de diseño Strategy puede ser una buena práctica ya que permite que el usuario pueda cambiar la forma en que se comparan los valores y se ordenan en tiempo de ejecución. Esto significa que si los requisitos cambian, el usuario puede simplemente cambiar el algoritmo de comparación y ordenación en lugar de tener que modificar directamente el código.

Además, el uso del patrón de diseño Strategy puede mejorar la modularidad y la mantenibilidad del código, ya que cada algoritmo de comparación y ordenación se encapsula en su propia clase, lo que hace que el código sea más fácil de leer, entender y mantener.

Por último, el uso del patrón de diseño Strategy puede mejorar la eficiencia del código, ya que el algoritmo de comparación y ordenación se puede elegir en tiempo de ejecución, lo que significa que se puede seleccionar el algoritmo más eficiente en función de las necesidades específicas de la aplicación.

En resumen, el uso del patrón de diseño Strategy para comparar valores y ordenar puede considerarse una buena práctica, ya que permite que el usuario pueda cambiar la forma en que se realiza la tarea en tiempo de ejecución, mejora la modularidad y la mantenibilidad del código, y puede mejorar la eficiencia del código.

malejaip commented 1 year ago
import java.util.Comparator;

public class StrategyComparator {

        public ArrayList<NaveJugador> ordenarPor(Comparator<NaveJugador> comparador, ArrayList<NaveJugador> jugadores) {
            ArrayList<NaveJugador> jugadoresOrdenados = new ArrayList<NaveJugador>(jugadores);
            jugadoresOrdenados.sort(comparador);
            return jugadoresOrdenados;
        }

        public ArrayList<NaveJugador> ordenarPorNickname(ArrayList<NaveJugador> jugadores) {
            Comparator<NaveJugador> comparador = Comparator.comparing(NaveJugador::getNickname);
            return ordenarPor(comparador, jugadores);
        }
}