Как заменить 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
227 +1
0
Ответы
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 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир