Sobes.tech
Назад к вопросам
Middle
12

Что вы знаете о паттерне Стратегия?

Компании, где спрашивали
Позитив Технолоджис

Ответ от нейросети

sobes.tech AI

Паттерн Стратегия (Strategy) — это поведенческий шаблон проектирования, который позволяет определить семейство алгоритмов, инкапсулировать каждый из них и делать их взаимозаменяемыми. Это позволяет изменять поведение объекта во время выполнения, не изменяя его класс.

Основная идея:

  • Создается интерфейс стратегии с определенным методом.
  • Несколько классов реализуют этот интерфейс, предоставляя разные варианты алгоритма.
  • Контекст содержит ссылку на объект стратегии и делегирует ему выполнение задачи.

Пример использования: в ERP-системе разные способы расчета скидок для клиентов — каждый способ реализуется как отдельная стратегия.

interface DiscountStrategy {
    double applyDiscount(double price);
}

class NoDiscount implements DiscountStrategy {
    public double applyDiscount(double price) {
        return price;
    }
}

class SeasonalDiscount implements DiscountStrategy {
    public double applyDiscount(double price) {
        return price * 0.9;
    }
}

class Customer {
    private DiscountStrategy discountStrategy;

    public Customer(DiscountStrategy discountStrategy) {
        this.discountStrategy = discountStrategy;
    }

    public double getPrice(double price) {
        return discountStrategy.applyDiscount(price);
    }
}

Такой подход упрощает расширение и поддержку кода.