Как заменить switch case паттерном стратегия? Просматривал тут вакансии, в одной из них была довольно интересная формулировка примерно такого плана:
"Мы ожидаем, что программист будет понимать и активно использовать паттерны проектирования, но без фанатизма. Например, не будет каждый switch case переписывать в стратегию. "
Как я понимаю, имелся ввиду одноименный паттерн. Вот мне стало интересно, как им можно заменить switch case. Ветвление ведь для выбора стратегии все равно понадобится. Напримерswitch (x)
{
case 1:
obj.strategy = new Strategy1();
break;
case 2:
obj.strategy = new Strategy2();
break;
}
Буду признателен за примеры кода.

21 Авг 2019 в 07:00
255 +1
1
Ответы
1

Да, в вашем примере вместо switch case можно использовать паттерн стратегия. В данном случае вы можете создать интерфейс Strategy с методом execute, а затем реализовать этот интерфейс в конкретных стратегиях. Затем вы можете передавать объекты конкретных стратегий в объект, который использует стратегию.

Пример:

interface Strategy {
void execute();
}
class Strategy1 implements Strategy {
@Override
public void execute() {
// реализация стратегии 1
}
}
class Strategy2 implements Strategy {
@Override
public void execute() {
// реализация стратегии 2
}
}
class Context {
private Strategy strategy;
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
public void executeStrategy() {
if (strategy != null) {
strategy.execute();
}
}
}
public class Main {
public static void main(String[] args) {
Context context = new Context();
context.setStrategy(new Strategy1());
context.executeStrategy();
context.setStrategy(new Strategy2());
context.executeStrategy();
}
}

В этом примере в зависимости от выбранной стратегии будет вызываться соответствующий метод execute. Это позволяет избежать длинных цепочек switch case и упростить расширение кода за счет добавления новых стратегий без изменения существующего кода.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир