Вопрос проверяет знание паттернов проектирования и умение применять их в реальном коде.
Strategy позволяет инкапсулировать алгоритмы в отдельные классы.
Выбор стратегии происходит динамически по ключу.
Это устраняет большие цепочки if / else.
Код становится расширяемым и чистым.
Паттерн хорошо сочетается с DI-контейнерами.
Strategy — каноничное решение проблемы ветвящейся логики.
Strategy — это паттерн, позволяющий выбирать алгоритм поведения во время выполнения.
public interface ScopeStrategy {
void apply();
}
class UserScopeStrategy implements ScopeStrategy {
public void apply() { }
}
class AdminScopeStrategy implements ScopeStrategy {
public void apply() { }
}
Map<String, ScopeStrategy> strategies = Map.of(
"USER", new UserScopeStrategy(),
"ADMIN", new AdminScopeStrategy()
);
strategies.get(scope).apply();
Часто:
стратегии регистрируются как бины
Map<String, Strategy> внедряется автоматически
ключом выступает имя бина
Strategy — лучший способ заменить большие if / else при выборе логики по ключу и построить расширяемую архитектуру.