Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: strategy, pattern, polymorphism

Как применить паттерн Strategy для замены большого количества if / else при выборе логики по ключу (например, scope)?

Вопрос проверяет знание паттернов проектирования и умение применять их в реальном коде.

Короткий ответ

Strategy позволяет инкапсулировать алгоритмы в отдельные классы.
Выбор стратегии происходит динамически по ключу.
Это устраняет большие цепочки if / else.
Код становится расширяемым и чистым.
Паттерн хорошо сочетается с DI-контейнерами.

Длинный ответ

Strategy — каноничное решение проблемы ветвящейся логики.

Определение

Strategy — это паттерн, позволяющий выбирать алгоритм поведения во время выполнения.

Шаг 1. Интерфейс стратегии

public interface ScopeStrategy {
    void apply();
}

Шаг 2. Реализации

class UserScopeStrategy implements ScopeStrategy {
    public void apply() { }
}

class AdminScopeStrategy implements ScopeStrategy {
    public void apply() { }
}

Шаг 3. Выбор стратегии

Map<String, ScopeStrategy> strategies = Map.of(
    "USER", new UserScopeStrategy(),
    "ADMIN", new AdminScopeStrategy()
);

strategies.get(scope).apply();

Использование со Spring

Часто:

  • стратегии регистрируются как бины

  • Map<String, Strategy> внедряется автоматически

  • ключом выступает имя бина

Вывод

Strategy — лучший способ заменить большие if / else при выборе логики по ключу и построить расширяемую архитектуру.

Уровень

  • Рейтинг:

    5

  • Сложность:

    8

Навыки

  • Java

    Java

Ключевые слова

#strategy

#pattern

#polymorphism

Подпишись на Java Developer в телеграм