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




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