Назад к вопросам
Middle
72
questionbank
Для чего используется шаблон проектирования 'Стратегия'?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Шаблон "Стратегия" используется для:
- Определения семейства алгоритмов: Каждый алгоритм инкапсулируется в отдельный класс, реализующий общий интерфейс.
- Взаимозаменяемости алгоритмов: Клиентский код может легко переключаться между различными алгоритмами во время выполнения, используя полиморфизм, без модификации клиентского класса.
- Устранения условной логики: Заменяет множественные операторы
if/elseилиswitchна основе типа алгоритма. - Изоляции алгоритмов: Позволяет изменять или добавлять новые алгоритмы независимо от клиента, использующего их.
Пример структуры:
// Общий интерфейс для стратегий
interface PaymentStrategy {
void pay(int amount);
}
// Конкретная стратегия: оплата картой
class CreditCardPayment implements PaymentStrategy {
@Override
public void pay(int amount) {
// Логика оплаты картой
System.out.println("Оплачено " + amount + " с помощью кредитной карты.");
}
}
// Конкретная стратегия: оплата PayPal
class PaypalPayment implements PaymentStrategy {
@Override
public void pay(int amount) {
// Логика оплаты PayPal
System.out.println("Оплачено " + amount + " с помощью PayPal.");
}
}
// Контекст, использующий стратегию
class ShoppingCart {
private PaymentStrategy paymentStrategy;
public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
this.paymentStrategy = paymentStrategy;
}
public void checkout(int totalAmount) {
// Использование стратегии для оплаты
paymentStrategy.pay(totalAmount);
}
}
// Пример использования
// public class Main {
// public static void main(String[] args) {
// ShoppingCart cart = new ShoppingCart();
// // Использование стратегии оплаты картой
// cart.setPaymentStrategy(new CreditCardPayment());
// cart.checkout(100);
// // Переключение на стратегию оплаты PayPal
// cart.setPaymentStrategy(new PaypalPayment());
// cart.checkout(200);
// }
// }