Le modèle Stratégie répond à la nécessité de définir une famille d'algorithmes, d'encapsuler chacun d'entre eux et de les rendre interchangeables. Ce modèle permet à l'algorithme de varier indépendamment des clients qui l'utilisent. C'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 éléments principaux :
Le contexte délègue l'exécution de l'algorithme à l'objet 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 où 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("user@example.com")); cart.checkout(200); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!