Проектирование request для разных провайдеров данных в единой фабрике

Рейтинг: 0Ответов: 0Опубликовано: 07.08.2023

Проблема проектирования такова. Есть запрос к api на получение данных. Свойства класса запроса типизированы. Поставщик api может быть разным и выбирается, в том числе в пользовательском интерфейсе. Все зависимости реализованы через контейнер зависимостей Laravel. Т.е. конкретные реализации клиента запроса к стороннему апи и структуры данных определяются контейнером зависимости и имеют общий интерфейс, а не создаются через new.

Но несмотря на единый интерфейс получения ответа и данных, и то, поставщики отдают похожие данные, запросы у поставщиков имеют разный набор параметров. И только часть пересекается и может иметь единый интерфейс. Но есть и индивидуальные свойства. И их тоже нужно конфигурировать.

Реализовал получение ответа через шаблон фабрику. Настройки получаем в виде массива (из базы данных или из пользовательского ввода). На основании него конфиругируем все единые и дефолтные настройки для request поставщиков. Но есть проблема. При конфигурировании request нельзя добиться единого интерфейса сеттеров, ведь часть параметров различается. Единственный вариант поставить тип request - mixed или array. Но тогда это уже и не фабрика будет, объекты должны иметь единый интерфейс. Как лучше построить request в этом случае по принципам solid?

Ответы

Ответов пока нет.