Rechercher

Les quatre concepts pratiques de développement Java - Partie 2 Single Responsibility Principle (SRP)





Question

Quel est le problème avec l'extrait de code suivant ? Comment allez-vous procéder pour le refactoriser ?



A. La classe ci-dessus représente 3 responsabilités différentes.

  • Identifie de façon unique un animal avec son identifiant et son nom.

  • Interagis avec la base de données pour enregistrer et lire un animal.

  • Valide les détails de l'animal.


Par conséquent, la classe ci-dessus viole le SRP « Single Responsability Principle », qui stipule qu'une classe ne devrait avoir qu'une seule raison de changer. Ce principe est basé sur la cohésion. La cohésion est une mesure de la force avec laquelle une classe se concentre sur ses responsabilités. Il s'agit des deux types suivants :


  • Haute cohésion: cela signifie qu'une classe est conçue pour effectuer une tâche spécifique et précise. En utilisant une cohésion élevée, les méthodes sont plus faciles à comprendre, car elles effectuent une seule tâche.

  • Faible cohésion: cela signifie qu'une classe est conçue pour effectuer diverses tâches. En utilisant une faible cohésion, les méthodes sont difficiles à comprendre et à maintenir.

Digital Growing vous offre une formation gratuite sur les principes de développement POO, n'hésitez pas à y inscrire, c'est gratuit :) .


Par conséquent, le code ci-dessus souffre d'une faible cohésion. Le code ci-dessus peut être amélioré comme indiqué ci-dessous. La classe Animal est remaniée pour n'avoir qu'une seule responsabilité d'identifier de façon unique un animal.




La responsabilité d'interagir avec la base de données est transférée à une classe d'accès aux données (c'est-à-dire DAO). La classe d'accès aux données prend en entrée un objet animal ou l'un de ses attributs.




Enfin, la responsabilité de valider un animal est re-factorisée dans une classe distincte qui prend un objet animal en entrée.




Vous avez maintenant 3 classes qui ont une séparation claire des responsabilités. La classe Animal a été dissociée des préoccupations liées à la base de données et de la validation. Le code ci-dessus est également bien encapsulé et très cohérent.

Le défi avec SRP est d'obtenir la granularité d'une responsabilité juste. L'une des plaintes les plus courantes concernant la SRP est l'explosion d'objets. Il s'agit d'une plainte valable, mais lorsque les choses sont ventilées par responsabilité, comme indiqué ci-dessus, il est beaucoup plus facile de considérer la responsabilité isolément et de trouver une meilleure conception pour cette seule responsabilité. L'art du design consiste à trouver un bon équilibre en posant les bonnes questions et en ne suivant pas aveuglément un principe.


Pour plus de détails sur les principes de développement POO, vous pouvez s'inscrire sur notre formation gratuite Tips POO Vs PF pour réussir ton entretien Java

0 vue

#Suivez-Nous

+213560764957

©2020 by DIGITAL GROWING.