Como lidar com condições de consulta complexas: mapeador de dados vs. camada de serviço
Ao lidar com condições de consulta complexas na programação orientada a objetos, há Existem duas abordagens principais: lidar com eles no mapeador de dados ou na camada de serviço.
Abordagem do mapeador de dados
Os dados O padrão mapper é usado para mapear objetos de domínio de e para um banco de dados. No contexto de tratamento de condições, o mapeador de dados pode ter um método get() genérico que aceita uma lista de condições. Por exemplo, se quisermos recuperar livros por autor, poderíamos chamar BookDataMapper->get(['author' => 'John Doe']).
No entanto, se quisermos usar múltiplas condições que exigem Para uma consulta complexa, como encontrar livros por autor e editora, poderíamos expandir o método BookDataMapper->get() para analisar as condições. Alternativamente, poderíamos criar um novo método como BookDataMapper->getByAuthorAndPublisher().
Abordagem da camada de serviço
A camada de serviço é responsável por lidar com a lógica de negócios do aplicativo . Ele pode atuar como intermediário entre o controlador e o mapeador de dados. No caso de lidar com condições de consulta complexas, a camada de serviço poderia chamar diretamente os métodos mais específicos do mapeador de dados, como BookService->getByAuthorAndPublisher(). Essa abordagem reduziria a camada de serviço a apenas um intermediário.
Comparação de abordagens
A abordagem do mapeador de dados mantém as condições dentro do mapeador de dados, o que pode levar à lógica condicional vazando dos objetos do domínio. Por outro lado, a abordagem da camada de serviço mantém a lógica do domínio dentro da camada de serviço, tornando-a mais modular.
Em última análise, a escolha entre essas abordagens depende dos requisitos específicos da aplicação. Se a lógica do domínio for relativamente simples e as consultas complexas não forem frequentes, a abordagem do mapeador de dados pode ser suficiente. No entanto, se a lógica do domínio for complexa ou as consultas complexas forem frequentes, a abordagem da camada de serviço pode ser mais apropriada.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3