2010-11-29 2 views
1

Je suis nouveau à DDD et j'ai besoin d'effacer un concept pour pouvoir l'appliquer à mon projet.Un objet de domaine 'rempli' par plusieurs dépôts

Fondamentalement, j'ai un objet de domaine "Client". CustomerRepository renvoie cet objet de domaine en référençant le DAL.

Le problème est que le DAL ne peut pas fournir toutes les informations nécessaires pour «remplir» l'objet domaine client. Certaines informations concernant le Client seront acquises par une autre ressource externe, peut-être un autre référentiel ou un service Web externe.

Peut-être que je devrais diviser mon objet domaine "Client". Mais que se passe-t-il si ma logique métier ne me permet pas de le faire?

De même, est-ce uniquement la responsabilité du référentiel de renvoyer un objet de domaine?

Répondre

1

Oui, cela devrait être la responsabilité du référentiel.

Le stockage est bon marché de nos jours. Peut-être doubler ces données permettrait de résoudre vos problèmes? Par exemple, si customer.firstname provient de la source de données # 1 mais customer.lastname provient de la source de données # 2, vous pouvez simplement vous assurer que l'enregistrement client customer.lastname est stocké dans la source de données # 1 (+ procédure qui serait mise à jour déjà enregistrée les clients)?

Autre chose - Votre modèle de domaine ne devrait pas être au courant de ce problème. Vous devriez essayer de le garder inconscient des problèmes techniques. Sinon - Vous finirez par perdre l'isolation et vous retrouverez avec des objets de domaine artificiels qui y sont codés juste pour le faire fonctionner.

+0

+1. Ne compromettez pas l'entité client de votre domaine, sinon vous diffuserez la polution architecturale dans le modèle de domaine. Garder le modèle précis est un principe fondamental de DDD. Le dépôt est la maison naturelle pour traiter le problème. Quelle est la raison pour laquelle il ne peut pas accéder aux deux emplacements de stockage (c'est-à-dire DAL + Web service/what)? – sfinnie

+0

@sfinnie seule raison il y a - il pourrait être techniquement difficile et pourrait affecter considérablement les performances. En dehors de cela - rien de mal. –

+0

ok. Je voterais toujours pour garder l'entité de domaine complète du point de vue du reste du domaine. Vous pourriez potentiellement regarder une stratégie de type «chargement paresseux» pour le repo. Cependant, je commencerais simplement en premier et je n'y arriverais que si vous avez des problèmes de performance. – sfinnie

Questions connexes