Le modèle Stratégie répond à la nécessité de définir une famille d'algorithmes, d'encapsuler chacun d'eux et de les rendre interchangeables. Ce modèle permet à l'algorithme de varier indépendamment des clients qui l'utilisent. Ceci est utile lorsque vous disposez de plusieurs façons d’effectuer une tâche spécifique et que vous souhaitez choisir l’algorithme au moment de l’exécution.
Le modèle de stratégie implique trois composants principaux :
Le contexte délègue l'exécution de l'algorithme à l'objet de stratégie, ce qui permet de sélectionner l'algorithme au moment de l'exécution.
Un exemple pratique du modèle de stratégie est celui d'un système de traitement des paiements dans lequel différentes méthodes de paiement (par exemple, carte de crédit, PayPal, virement bancaire) sont mises en œuvre en tant que différentes stratégies. Le client peut choisir la stratégie de paiement appropriée au moment de l'exécution.
Modèle de stratégie dans le code :
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); } }
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3