Проверяет знание паттерна для динамического выбора алгоритмов.
Стратегия — это паттерн, позволяющий выбирать алгоритм во время выполнения (например, сортировка или оплата). Алгоритмы инкапсулируются в отдельные классы и могут заменяться.
Интерфейс стратегии:
interface PaymentStrategy {
void pay(int amount);
}Конкретные стратегии:
class CreditCardPayment implements PaymentStrategy {
void pay(int amount) { /* Оплата картой */ }
}
class PayPalPayment implements PaymentStrategy {
void pay(int amount) { /* Оплата через PayPal */ }
}Контекст:
class ShoppingCart {
private PaymentStrategy strategy;
void setStrategy(PaymentStrategy strategy) {
this.strategy = strategy;
}
void checkout(int amount) {
strategy.pay(amount);
}
}Пример использования:
ShoppingCart cart = new ShoppingCart();
cart.setStrategy(new CreditCardPayment());
cart.checkout(100); // Оплата картойВывод:
Полезен для:
Динамической смены поведения.
Избегания условных операторов (if-else).