J'ai lu l'article de Wikipédia sur le DDD, mais je n'arrive toujours pas à comprendre ce qu'il est réellement et comment je pourrais le mettre en œuvre dans la création de mes sites ?
Réponses
Trop de publicités?Tout d'abord, si vous ne savez pas que vous en avez besoin, il est possible que vous n'en ayez pas besoin. Si vous ne reconnaissez pas les problèmes que DDD résout, il est possible que vous n'ayez pas ces problèmes. Même les défenseurs de la DDD soulignent souvent que la DDD n'est destinée qu'aux grands projets (>6 mois).
En supposant que vous êtes toujours en train de lire, mon point de vue sur le DDD est le suivant :
La DDD consiste à essayer de faire de votre logiciel un modèle d'un système ou d'un processus du monde réel. En utilisant DDD, vous êtes censé travailler en étroite collaboration avec une _expert du domaine_ qui peut expliquer le fonctionnement du système dans le monde réel. Par exemple, si vous développez un système qui gère les paris sur les courses de chevaux, votre expert de domaine peut être un bookmaker expérimenté.
Entre vous et l'expert du domaine, vous construisez une langue omniprésente (UL), qui est essentiellement une description conceptuelle du système. L'idée est de pouvoir écrire ce que fait le système de manière à ce que l'expert du domaine puisse le lire et vérifier qu'il est correct. Dans notre exemple de paris, le langage omniprésent comprendrait la définition de mots tels que "course", "pari", "cote", etc.
Les concepts décrits par l'UL constitueront la base de votre conception orientée objet. DDD fournit des indications claires sur la manière dont vos objets doivent interagir, et vous aide à diviser vos objets dans les catégories suivantes :
- les objets de type valeur, qui représentent une valeur pouvant comporter des sous-parties (par exemple, une date peut comporter un jour, un mois et une année).
- Les entités, qui sont des objets avec identité . Par exemple, chaque objet Client possède sa propre identité, ce qui nous permet de savoir que deux clients portant le même nom ne sont pas le même client.
- Les racines agrégées sont des objets qui possèdent d'autres objets. Il s'agit d'un concept complexe qui repose sur le fait que certains objets n'ont de sens que s'ils ont un propriétaire. Par exemple, un objet 'Ligne de commande' n'a pas de sens sans une 'Commande' à laquelle il appartient. Nous disons donc que la Commande est la racine agrégée et que les objets de la Ligne de commande ne peuvent être manipulés que par des méthodes de l'objet Commande.
Le DDD recommande également plusieurs modèles :
- Référentiel un modèle de persistance (sauvegarde et chargement de vos données, généralement vers/depuis une base de données).
- Usine un modèle pour la création d'objets
- Service, un modèle permettant de créer des objets qui manipulent les objets de votre domaine principal sans faire partie du domaine lui-même.
À ce stade, je dois dire que si vous n'avez jamais entendu parler de ces choses, vous ne devriez pas essayer d'utiliser DDD sur un projet pour lequel vous avez une date limite. Avant d'essayer la DDD, vous devez vous familiariser avec les éléments suivants modèles de conception et modèles de conception d'entreprise . La connaissance de ces éléments rend DDD beaucoup plus facile à appréhender. Et, comme mentionné ci-dessus, il existe un introduction gratuite à DDD disponible auprès d'InfoQ (où vous pouvez également trouver des exposés sur la DDD).
Prenez l'exemple de StackOverflow. Au lieu de commencer à concevoir des formulaires Web, vous vous concentrez d'abord sur la modélisation orientée objet des entités de votre domaine de problèmes, par exemple les utilisateurs, les questions, les réponses, les votes, les commentaires, etc. Puisque la conception est guidée par les détails du domaine du problème, on l'appelle la modélisation orientée objet. conception axée sur le domaine .
Vous pouvez en savoir plus dans Le livre d'Eric Evans .
Il existe une version courte du livre d'Eric Evans disponible gratuitement .