Назад к вопросам
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);
}
}
Такой подход упрощает расширение и поддержку кода.