Je lis sur l'idée de contextes bornés dans le DDD, et je commence à comprendre que je ne comprends pas clairement quel modèle manne em> est dans la pratique. (Je ne saurais même pas exactement ce que signifie em> signifie, non plus.) P>
Regardons l'exemple de commerce électronique populaire: un client de navigation client, ajoute à son panier, place une commande. L'épanouissement de la commande Les gens expédient les commandes. P>
Y a-t-il un grand domaine de commerce électronique avec plusieurs contextes délimités (contexte de catalogue de produits, contexte du panier, contexte de commande, contexte d'accomplissement)? Chaque contexte délimité contient-il un tas de modèles (de sorte que le contexte du catalogue de produits contient des modèles pour les produits, les images du produit, les critiques de produits)? P>
À quelle distance suis-je? p>
3 Réponses :
Si vous allez bien avec l'exemple en Java, cela pourrait être utile: http://ddddsample.sourceforge.net/ < / a> p>
Cet exemple ne montre pas plusieurs contextes délimités. C'est en fait un avec des agrégats multiples. Je sais parce que j'ai utilisé cet échantillon (celui de .NET) et, la main vers le bas, un excellent échantillon à apprendre de, mais pas de multiples contextes délimités du tout. C'est la raison pour laquelle je vais parcourir des articles ici.
Je pense que votre vue est exacte. Les contextes traitent de différents aspects du même concept du monde réel. Dans votre cas, vous pourriez avoir une commande représentée comme une sorte d'abstraction de panier d'achat pour l'utilisateur et en même temps sous une forme compatible avec l'ERP usagé. p>
Au lieu d'essayer de faire chaussettes Le concept d'une commande dans un modèle unique, les contextes de DDD disent fondamentalement qu'il est correct de représenter un concept utilisant deux modèles complètement différents (dans différents contextes), en fournissant des mappages explicites entre ces modèles à mesure que le besoin se pose. Cela empêche les modèles d'agréger le cruft qui glisse généralement si l'on essaie d'utiliser le même modèle dans une multitude de contextes. P>
Un contexte délimité est l'endroit où une langue omniprésente est cohérente.
au moins vous êtes sur la bonne voie. L'erreur classique est de voir des modèles uniquement.
Domaine signifie des problèmes que vous avez affaire (support pour le commerce électronique, la santé, la comptabilité, etc.). Le modèle de domaine est une solution de ces problèmes représentés au code qui suit notre modèle mental aussi proche que possible. P>
Regardons l'exemple de commerce électronique populaire: un client de navigation client, ajoute à son panier, place une commande. L'épanouissement de la commande Les gens expédient les commandes. P> BlockQuote>
Dans votre exemple, je commencerais par quelque chose comme ceci: p>
xxx pré> au début - cela semble être une énorme surpression. Avec un code de procédure - la même chose peut être obtenue avec peu de collections et peu de boucles. Mais l'idée de conception pilotée sur le domaine est de résoudre des problèmes vraiment complexes. P>
La programmation orientée objet convient parfaitement - avec elle, vous pouvez abstraire des choses à l'extérieur qui n'a pas d'importance lorsque vous avancez. Aussi - il est important de nommer des choses en conséquence pour vous (et vos experts de domaine (personnes qui comprennent le problème)) seraient en mesure de comprendre le code même après des années. Et non seulement le code, mais pour parler dans une langue omnipiquite aussi. P>
Notez que je ne connais pas le domaine de commerce électronique et quel type de problèmes vous pourriez essayer de résoudre, donc - il est très probable que je vient d'écrire un non-sens complet selon votre modèle mental. C'est une raison pour laquelle l'enseignement de la modélisation du domaine est si déroutant et difficile. Aussi - il exige une grande habileté dans la pensée abstraite qui, selon ma compréhension, il n'est pas nécessaire d'obtenir un diplôme CS. P>
Vous êtes un peu à propos des contextes bornés. Mais vous devriez vous rappeler qu'ils ajoutent besoin de traduction entre eux. Ils ajoutent de la complexité et de la solution complexe d'usuelle conviennent à des problèmes complexes uniquement (cela est vrai pour le DDD lui-même). Donc, vous devriez éviter de les spammer tant que la signification de vos entités de domaine ne se chevauchent pas. Deuxième raison (moins "naturelle") serait un besoin fort de décomposition. P>
P.s. Lire Book Evans . Deux fois ... jusqu'à ce que cela ait du sens ... :) p> p>
Après avoir lu IDDD de Vaughn Vernon, j'ai l'impression que votre exemple n'a pas réussi à modéliser correctement la façon dont les choses devraient être. Un commande code> A
produit code> et même un
client code> ont des moyens très différents dans le contexte d'achat et le contexte d'expédition. L'opération de remplissage code> de la commande > n'a aucun sens dans le contexte d'achat, par exemple. Bien que je sente que l'exemple n'est pas juste de manière stratégique, je ne sais pas comment aborder le problème tactiquement.
@plalx peut-être. Comme je l'ai écrit - je voudrais Démarrer B> ici. Une autre chose - l'anglais n'est pas ma langue maternelle. Aussi - j'ai écrit cela il y a longtemps. Mais oui, vous êtes sur la bonne direction. Le sens et la dénomination compte beaucoup. DDD est à peu près sur la manière dont vous comprenez et reflète la logique des affaires.