10
votes

Appeler un référentiel d'un référentiel

J'ai un catalogue et un utilisateur de deux référentiels, j'ai une situation où j'ai besoin d'appeler une méthode dans le catalogue Repo de l'utilisateur Repo, est-ce une bonne pratique ou y a-t-il une meilleure façon?


1 commentaires

Le problème. J'ai des méthodes liées au commentaire dans mon catalogue Repo. Dans mon utilisateur Repo, je souhaite ajouter la méthode Canaserpost (qui interrogera DB pour voir si suffisamment de commentaires ont été apportés pour leur permettre de poster). Le code requis sera utilisé au sein des deux Repo's, de sorte que SGUDriez-la, dans une seule et référence à l'autre, à la fois selon la référence DFA à la couche de service ou autre chose?


3 Réponses :


6
votes

Je ferais référence à l'autre référentiel à la couche supérieure, telle qu'une couche de service


0 commentaires

9
votes

Vous ne devriez pas traiter ce genre de chèques d'autorisation dans vos référentiels. Une règle d'entreprise comme "Cet utilisateur a besoin de x commentaires à poster" n'est pas vraiment une requête de référentiel, c'est une propriété de votre utilisateur.

En outre, les appels d'autorisation sont fabriqués très fréquemment dans une application et vous ne voulez vraiment pas frapper votre base de données à chaque fois qu'un chèque est requis.

Vous devez charger correctement ces autorisations dans votre objet utilisateur, qui est ensuite mis en cache pour la demande actuelle et utilisez votre domaine: xxx


1 commentaires

Je pense que la méthode de sauvegarde doit être la méthode de la classe utilisateur. Mais ensuite, la classe d'utilisateurs doit savoir sur POSTREPO. Est-ce une bonne idée?



0
votes

Je pense que dans votre autorisation de cas fait partie de la logique de votre domaine. Je créerais donc une classe abstraite ou une interface appelée autorisationpolicy (vous pouvez peut-être trouver un meilleur nom de votre domaine), dans ma couche de domaine. Avant d'appeler une méthode sur le référentiel, le client doit vérifier si l'autorisation est basée sur la stratégie.

Une autre solution, car l'interface d'un référentiel fait également partie de la logique commerciale, vous pouvez créer une classe de base pour votre référentiel qui vérifie les autorisations de l'utilisateur et déléguer le reste aux classes dérivées.

La mise en œuvre de l'autorisationPolicy parle à la classe de catalogue si vous le souhaitez. De cette façon, les deux référentiels sont bien découplés.


0 commentaires