Sobes.tech
Назад к вопросам
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);
    }
}

Такой подход повышает гибкость и расширяемость кода, упрощает добавление новых алгоритмов без изменения существующего кода.