Je voudrais savoir si vous trouvez le modèle suivant significatif dans la conception pilotée par domaine.Cet exemple de service de référentiel d'entités s'intègre-t-il dans la conception guidée par domaine?
La couche de domaine est constituée d'un modèle et d'un référentiel. La couche d'application est constituée de services qui traitent les requêtes provenant de l'interface utilisateur ou de contrôleurs dans le modèle Model-View-Controller.
Détails de la structure:
// Assembly Model: public class Phrase { public int PhraseId { get; private set; } public string PhraseText { get; private set; } public Phrase(string phraseText) { this.PhraseText = phraseText; } public void SetId(int phraseId) { this.PhraseId = phraseId; } } // Assembly Repository (references assembly Model): public interface IPhraseRepository { Phrase SavePhrase(Phrase phrase); Phrase GetPhrase(int phraseId); } // Assembly Services (references assemblies Model and Repository): public class PhraseService { private IPhraseRepository _phraseRepository; public PhraseService(IPhraseRepository phraseRepository) { _phraseRepository = phraseRepository; } public Phrase SavePhrase(string phraseText) { Phrase phrase = _phraseRepository.SavePhrase(new Phrase(phraseText)); // doing other things like sending mail, logging, etc. // ... return Phrase; } }
En particulier, serait-il judicieux de déplacer la méthode dans la classe d'entités de phrase? Dans ce cas, comment cela serait-il appelé?
EDIT:
L'exemple ci-dessus a été modifié après la réponse de moffdub et le commentaire de Adeel Ansari. Les modifications sont en surbrillance.
Je voudrais poser une question à propos de l'ajout de IPhraseRepository.GetPhrase (phraseId) et comment vous incluez cela?
À propos de la GetPhrase: Je pense que cela semble bien. Une autre option consiste à utiliser un objet de requête (http://martinfowler.com/eaaCatalog/queryObject.html) comme paramètre, si vous avez besoin de plus de critères que l'identifiant. – moffdub
Un commentaire à propos de SavePhrase: Dans ce cas, lorsque vous n'obtenez pas le PhraseId jusqu'à ce que vous sauvegardez, j'ai généralement des méthodes "save" soit ne rien retourner et mettre l'ID dans la méthode, ou retourner le nouvel ID. – moffdub