Раздельное построение и выполнение запросов

У меня есть несколько типов запросов с разной полезной нагрузкой (или вообще без полезной нагрузки). Я хочу отделить построение запроса от его выполнения, поэтому у меня есть RequestFactory, который создает абстрактный запрос, и RequestExecutor, у которого есть метод execute (запрос). Проблема в том, что логика выполнения запроса связана с его типом, поэтому мне нужны такие случаи:

if (request instanceof SomeTypeOfRequest) ((SomeTypeOfRequest) request).getPayload()

Другой подход состоит в том, чтобы иметь метод execute внутри Request, но это приводит к тому, что все зависимости RequestExecutor находятся внутри RequestFactory, поскольку они мне нужны для создания запроса. Какие еще варианты у меня есть?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кажется, я могу использовать посетителя. Он как бы объединяет эти два подхода. Мне просто нужно иметь метод execute(RequestExecutor) в интерфейсе запроса

Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, редактировать добавьте дополнительную информацию, например цитаты или документацию, чтобы другие могли подтвердить правильность вашего ответа. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.

Community 13.05.2022 08:50

Другие вопросы по теме

Похожие вопросы

Java - регулярное выражение разбивает строку, но совпадение регулярного выражения возвращает false в той же строке
Все внедренные bean-компоненты Rest Controller имеют значение NULL при вызове rest API с помощью аннотированного метода @RequestPart
Как создать минутный таймер по нажатию кнопки?
Как получить доступ к переменной из одного файла контроллера класса в другой в JavaFX?
Как я могу преобразовать массив символов в int без использования parseInt и String.valueOf() (java)
Зачем нам нужно приводить экземпляр WebDriver к типу JavascriptExecutor перед вызовом метода executeScript?
Spring Data Jpa: сохранение дочерних объектов из родительского объекта не обновляет дочерний идентификатор
Как избежать повторяющихся имен параметров (т.е. почти совпадающих с именем атрибута объекта) при создании конструктора объекта?
Оболочка gradle сообщает об архитектуре x86-64 вместо архитектуры arm-v8 на Mac m1
Как вывод определен в java map?