2009-08-25 8 views
2

J'ai programmé pendant de nombreuses années, récemment, j'ai essayé d'appliquer certaines des idées de la conception pilotée par le domaine, mais j'ai encore du mal à décider de bons noms pour certaines parties d'un système.Comment nommer les classes utilisées par un référentiel pour l'accès aux données?

Voici un exemple;

J'ai un service Web WCF qui renvoie des objets "Ordinateur". L'objet est une racine agrégée qui contient des entités enfants.

Les entités enfants sont chargées à partir de deux bases de données différentes et à partir d'Active Directory.

Maintenant j'ai des classes Repository séparées pour chaque entité "ComputerAssetRepository", "DeploymentRepository", "DirectoryRepository" et ainsi de suite, alors j'ai un "ComputerRepository" qui appelle chaque référentiel enfant et retourne le résultat dans le "Computer" entité racine agrégée.

Je n'aurais probablement qu'un seul "ComputerRepository" et les autres classes ne sont responsables que de l'accès aux données provenant des diverses sources. Comme ils ont besoin de fonctions de dépôt communes, FindById/Add/Remove/Contains etc, je les appelle des dépôts.

Y a-t-il un meilleur nom pour ces classes?

Répondre

1

Je pense que la bonne réponse dépend si oui ou non les ComputerAsset, Deployment, Directory, et d'autres entités similaires sont des agrégats enfants globalement accessibles de la même manière que Computer est.

De toute façon, je pense qu'ils méritent leurs propres dépôts et je pense qu'ils sont convenablement nommés pour l'instant. Un "référentiel" au sens DDD fait simplement référence au mécanisme de traversée par lequel vous travaillez avec des objets existants (les usines gèrent la création de nouveaux objets). Mais s'ils ne sont pas destinés à être accessibles globalement, rendez simplement ces dépôts internes à ComputerRepository.

+0

Merci pour la confirmation. – Andronicus

Questions connexes