Как обрабатывать сложные условия запроса: Data Mapper vs. Service Layer
При работе со сложными условиями запроса в объектно-ориентированном программировании Существует два основных подхода: обработка их в сопоставителе данных или на уровне сервиса.
Подход сопоставителя данных
Шаблон сопоставителя данных используется для сопоставления объектов домена и из базы данных. В контексте обработки условий преобразователь данных может иметь общий метод get(), который принимает список условий. Например, если мы хотим получить книги по автору, мы могли бы вызвать BookDataMapper->get(['author' => 'John Doe']).
Однако, если мы хотим использовать несколько условий, требующих сложный запрос, например поиск книг по автору и издателю, мы могли бы расширить метод BookDataMapper->get() для анализа условий. В качестве альтернативы мы могли бы создать новый метод, например BookDataMapper->getByAuthorAndPublisher().
Подход уровня сервиса
Уровень сервиса отвечает за обработку бизнес-логики приложения. . Он может выступать в качестве посредника между контроллером и преобразователем данных. В случае обработки сложных условий запроса уровень сервиса может напрямую вызывать более конкретные методы преобразования данных, такие как BookService->getByAuthorAndPublisher(). Такой подход сведет уровень обслуживания к простому посреднику.
Сравнение подходов
Подход с устройством отображения данных сохраняет условия внутри устройства отображения данных, что может привести к к условной логике, вытекающей из объектов предметной области. С другой стороны, подход на уровне сервиса сохраняет логику предметной области внутри уровня сервиса, что делает его более модульным.
В конечном счете, выбор между этими подходами зависит от конкретных требований приложения. Если логика предметной области относительно проста, а сложные запросы встречаются нечасто, подхода с использованием преобразователя данных может быть достаточно. Однако если логика предметной области сложна или сложные запросы выполняются часто, подход уровня обслуживания может оказаться более подходящим.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3