web-dev-qa-db-fra.com

Comment appliquez-vous un principe de responsabilité unique à un référentiel?

J'essaie d'appliquer "Solid" chaque fois que je peux et j'essaie d'utiliser le bon sens et d'éviter un schéma lorsque je vois qu'un motif crée plus de problèmes que d'essayer de résoudre. Je ne veux pas appliquer de modèle et rendre la vie difficile pour quelqu'un d'autre en utilisant mon code juste pour le saké "J'écris des modèles" si vous voyez ce que je veux dire.

Maintenant, je me débats avec l'un des principes que je pensais était le plus facile à saisir: "SRP".

Comment appliquez-vous pratiquement ce principe aux référentiels?

Supposons que j'ai un

IEmployeeRepository
IUserRepository
IProductRepository

et couramment, ils auront des méthodes comme celles-ci:

public interface IUserRepository
{
    User GetUser(int id);
    IEnumerable<User> GetAllUser();
    void DeleteUser(int id);
}

idem pour les employés et les produits.

Disons-nous que chacune de ces méthodes devrait être une classe sur elle est propre? Même si parfois nous parlons une seule ligne de code?

5
developer9969

Je pense que vous devriez penser qui a intérêt à changer cette classe respective. Par exemple, si vous avez une classe d'utilisateur avec une méthode CalculatePay et une méthode de sauvegarde. Le comptable voudrait modifier le calculateur et l'administrateur de la DB la méthode de sauvegarde. Ce sont deux responsabilités différentes.

Le SRP signifie regrouper des choses ensemble qui changent pour la même raison. Donc, le référentiel ne devrait pas violer le SRP.

8
thesolidphp