Couche de service ou mappeur de données : qui doit gérer les conditions de requête complexes ?

DDD
Libérer: 2024-11-08 00:31:03
original
361 Les gens l'ont consulté

 Service Layer vs. Data Mapper: Who Should Handle Complex Query Conditions?

Déterminer la responsabilité des conditions de traitement dans les requêtes complexes : couche de service vs. mappeur de données

Dans la poursuite de la récupération et de la manipulation des données, la question se pose : qui doit supporter la charge de gérer des conditions de requête complexes - le mappeur de données ou la couche de service ?

Le mappeur de données

Le modèle de mappeur de données dicte une interface simple , les principales responsabilités étant la récupération, la sauvegarde et la suppression des données. Cependant, les détails de sa mise en œuvre restent sujets à interprétation.

Malgré son interface minimaliste, le mappeur de données peut être étendu pour incorporer une certaine logique conditionnelle, comme la récupération d'objets en fonction d'identifiants spécifiques ou de noms d'auteurs.

La couche service

La couche service, quant à elle, agit comme intermédiaire entre le contrôleur et le mappeur de données. Il peut alléger la complexité de la gestion de plusieurs conditions en appelant directement des méthodes plus spécifiques, telles que BookDataMapper->getByAuthorAndPublisher().

Avantages de la gestion des conditions de la couche de service

Certains préconisent que la couche de service analyse les conditions de requête pour plusieurs raisons :

  • Réduit la complexité du mappeur de données.
  • Conserve la logique conditionnelle au sein de la couche de modèle, empêchant ainsi sa fuite vers le contrôleur. .

Avantages de la gestion des conditions du mappeur de données

D'autres préfèrent centraliser la logique conditionnelle au sein du mappeur de données :

  • Simplifie le couche de service, ce qui en fait un simple intermédiaire.
  • Permet au mappeur de données d'incorporer des méthodes basées sur des conditions supplémentaires selon les besoins.

Approche optimale

L'approche optimale dépend de l'application spécifique et de la logique spécifique au domaine. Cependant, quelques directives générales peuvent être envisagées :

  • Gardez l'interface du mappeur de données aussi simple que possible, avec des opérations essentielles telles que la récupération, l'enregistrement et la suppression.
  • Utilisez l'objet de domaine lui-même pour contenir les paramètres conditionnels pour la récupération des données.
  • Utilisez le principe Tell Don't Ask pour minimiser la communication entre l'objet de domaine et le mappeur.
  • Envisagez d'utiliser des structures supplémentaires telles que ArticleCollectionMapper pour gérer des groupes d'objets. avec des conditions variables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!