El patrón de diseño de la estrategia pretende proporcionar una forma de elegir entre una variedad de estrategias intercambiables. La implementación clásica incluye una arquitectura a implementar por cada técnica y ofrece una implementación concreta para la ejecución. El método se elige de una referencia de interfaz y se llama al método de ejecución.
La implementación clásica del patrón de diseño de la estrategia:
La interfaz de estrategia debe ser implementada por todas las estrategias.
public interface Strategy { public void execute(); }
Todas las estrategias deben implementar la interfaz de estrategia dos clases que muestren la implementación de la interfaz de estrategia y creen un método de ejecución.
public class StrategyA implements Strategy { @Override public void execute(){ System.out.print("Executing strategy A"); } }
public class StrategyB implements Strategy { @Override public void execute() { System.out.print("Executing strategy B"); } }
La clase principal seleccionará la estrategia y ejecutará el método de ejecución de la estrategia que elegimos.
public class GFG { private Strategy strategy; public void setStrategy(Strategy strategy){ this.strategy = strategy; } public void executeStrategy(){ this.strategy.execute(); } }
Un ejemplo del uso de la Estrategia.
public class UseStrategy { public static void main(String[] args){ Context context = new Context(); context.setStrategy(new StrategyA()); context.executeStrategy(); context.setStrategy(new StrategyB()); context.executeStrategy(); } }
Enum implementación del patrón de diseño de la estrategia:
Tendrá dos clases: una clase de enumeración y una clase que la usa. Toda la magia sucede en la enumeración, donde se realiza la implementación concreta de la estrategia para definir cada constante de enumeración.
Java
// Java program to Implement a Strategy Pattern using Enum enum Strategy { STRATEGY_A { @Override void execute() { System.out.println("Executing strategy A"); } }, STRATEGY_B { @Override void execute() { System.out.println("Executing strategy B"); } }; abstract void execute(); } class UseStrategy { public static void main(String[] args) { UseStrategy useStrategy = new UseStrategy(); useStrategy.perform(Strategy.STRATEGY_A); useStrategy.perform(Strategy.STRATEGY_B); } private void perform(Strategy strategy) { strategy.execute(); } }
Executing strategy A Executing strategy B
Publicación traducida automáticamente
Artículo escrito por sachinchhipa44 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA