2008-10-14 15 views
4

Contexte: Donc, j'essaye de construire un modèle de domaine ridiculement complexe. En parlant avec les utilisateurs, il y a plusieurs façons d'utiliser le système (par exemple: l'un est du point de vue de l'employé, un autre est du point de vue de l'employeur). En réalité, ce sont des applications multiples qui réutilisent le domaine principal.Entity Perspectives

Question: Est-ce mal de créer le domaine à partir de perspectives multiples? Par exemple, construire le domaine au fur et à mesure que l'entreprise s'exécuterait signifierait créer toutes sortes de classes de relations qui apporteraient des informations supplémentaires sur l'entité et ainsi de suite ... Cependant, lorsque vous utilisez une perspective particulière, l'image est beaucoup plus claire. les classes de relations peuvent être déployées dans leur entité parente.

Des idées? Les réfutations? Suis-je complètement hors-base?

Répondre

4

Non, c'est absolument approprié. Evan appelle ces 'perspectives' Bounded Contexts dans son livre. Au lieu d'avoir un modèle de domaine vraiment complexe, essayez de créer un modèle simple qui aborde vraiment le domaine d'une manière spécifique. Les contextes bornés peuvent être reliés entre eux pour former un réseau de modèles de domaines directs plus petits et plus simples.

+0

J'ai le livre d'Eric et j'ai apparemment oublié ce chapitre. Merci pour la direction. –

2

Je ne pense pas que vous devriez essayer de prédéfinir le 'core domain' dès le départ. Laissez-le émerger au cours du processus de développement. De plus, tout ce qui n'est pas commun aux 2 (ou plus) points de vue ne devrait pas être dans le «noyau».

Par exemple, construire une partie du système du point de vue de l'employeur. Cela peut vous inviter à créer des entités telles que "Projet", "Tâche" et "Client". Puis construire une partie de la perspective de l'employeur. Cela peut vous inciter à créer de nouvelles entités et à réutiliser «Projet» et «Tâche». C'est alors que je déplacerais 'Project' et 'Task' vers la 'core library' partagée par le reste du système. Parfois, vous trouverez des entités communes, mais liées de différentes manières. Dans ce cas, la relation devrait être injectée par le contexte au lieu d'être intégrée aux entités elles-mêmes.