El patrón Estrategia aborda la necesidad de definir una familia de algoritmos, encapsular cada uno y hacerlos intercambiables. Este patrón permite que el algoritmo varíe independientemente de los clientes que lo utilicen. Es útil cuando tienes varias formas de realizar una tarea específica y deseas elegir el algoritmo en tiempo de ejecución.
El patrón Estrategia involucra tres componentes principales:
El contexto delega la ejecución del algoritmo al objeto de estrategia, lo que permite seleccionar el algoritmo en tiempo de ejecución.
Un ejemplo práctico del patrón Estrategia es un sistema de procesamiento de pagos donde se implementan diferentes métodos de pago (por ejemplo, tarjeta de crédito, PayPal, transferencia bancaria) como estrategias diferentes. El cliente puede elegir la estrategia de pago adecuada en tiempo de ejecución.
Patrón de estrategia en código:
java // Strategy Interface public interface PaymentStrategy { void pay(int amount); } // Concrete Strategy 1 public class CreditCardPayment implements PaymentStrategy { private String cardNumber; public CreditCardPayment(String cardNumber) { this.cardNumber = cardNumber; } @Override public void pay(int amount) { System.out.println(amount " paid with credit card " cardNumber); } } // Concrete Strategy 2 public class PayPalPayment implements PaymentStrategy { private String email; public PayPalPayment(String email) { this.email = email; } @Override public void pay(int amount) { System.out.println(amount " paid using PayPal account " email); } } // Context public class ShoppingCart { private PaymentStrategy paymentStrategy; public void setPaymentStrategy(PaymentStrategy paymentStrategy) { this.paymentStrategy = paymentStrategy; } public void checkout(int amount) { paymentStrategy.pay(amount); } } // Client code public class Client { public static void main(String[] args) { ShoppingCart cart = new ShoppingCart(); cart.setPaymentStrategy(new CreditCardPayment("1234-5678-9876-5432")); cart.checkout(100); cart.setPaymentStrategy(new PayPalPayment("[email protected]")); cart.checkout(200); } }
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3