Назад к вопросам
Middle
3
Расскажи про паттерн Стратегия.
Компании, где спрашивали
Лоция
Ответ от нейросети
sobes.tech AI
Паттерн «Стратегия» (Strategy) — это поведенческий паттерн проектирования, который позволяет определить семейство алгоритмов, инкапсулировать каждый из них и делать их взаимозаменяемыми. Это позволяет изменять алгоритмы независимо от клиентов, которые их используют.
Основная идея — выделить алгоритмы в отдельные классы, реализующие общий интерфейс, и в клиентском коде выбирать нужную стратегию динамически.
Пример на Java:
// Интерфейс стратегии
public interface PaymentStrategy {
void pay(int amount);
}
// Конкретные стратегии
public class CreditCardPayment implements PaymentStrategy {
public void pay(int amount) {
System.out.println("Оплата кредитной картой: " + amount);
}
}
public class PayPalPayment implements PaymentStrategy {
public void pay(int amount) {
System.out.println("Оплата через PayPal: " + amount);
}
}
// Контекст, использующий стратегию
public class ShoppingCart {
private PaymentStrategy paymentStrategy;
public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
this.paymentStrategy = paymentStrategy;
}
public void checkout(int amount) {
paymentStrategy.pay(amount);
}
}
// Использование
public class Main {
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
cart.setPaymentStrategy(new CreditCardPayment());
cart.checkout(1000);
cart.setPaymentStrategy(new PayPalPayment());
cart.checkout(2000);
}
}
Такой подход повышает гибкость и расширяемость кода, упрощает добавление новых алгоритмов без изменения существующего кода.