Das Strategiemuster befasst sich mit der Notwendigkeit, eine Familie von Algorithmen zu definieren, jeden einzelnen zu kapseln und sie austauschbar zu machen. Durch dieses Muster kann der Algorithmus unabhängig von den Clients variieren, die ihn verwenden. Dies ist nützlich, wenn Sie mehrere Möglichkeiten zur Ausführung einer bestimmten Aufgabe haben und den Algorithmus zur Laufzeit auswählen möchten.
Das Strategiemuster umfasst drei Hauptkomponenten:
Der Kontext delegiert die Ausführung des Algorithmus an das Strategieobjekt, wodurch der Algorithmus zur Laufzeit ausgewählt werden kann.
Ein praktisches Beispiel für das Strategiemuster ist ein Zahlungsverarbeitungssystem, in dem verschiedene Zahlungsmethoden (z. B. Kreditkarte, PayPal, Banküberweisung) als unterschiedliche Strategien implementiert sind. Der Kunde kann zur Laufzeit die passende Zahlungsstrategie wählen.
Strategiemuster im 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); } }
Das obige ist der detaillierte Inhalt vonDas Strategieentwurfsmuster in Java verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!