Les quatre concepts pratiques de développement Java - Partie 3 - Open Closed Principle (OCP)
Question
Quel est le problème avec l'extrait de code suivant ? Comment allez-vous procéder pour le refactoriser ?
Réponse
Le code ci-dessus viole Open Closed Principle (OCP). Au fil du temps, vous voudrez peut-être ajouter plus d'animaux comme le chien, le crabe, un dragon, etc.
Digital Growing Academy vous offre une formation gratuite sur les principes de développement POO, n'hésitez pas à y inscrire, c'est gratuit :) .
avec un nombre de pattes différent. Cela vous obligera à modifier la méthode count (…) de la classe AnimalLegCounter avec plus d'instructions else-if comme :
Cela montre que la classe AnimalLegCounter n'est pas fermée pour modification car vous devrez la modifier pour l'étendre. En d'autres termes, cela signifie qu'elle n'est pas ouverte à l'extension. L'exemple ci-dessus est trivial, mais dans les applications du monde réel, la base de code peut être 10 à 1000 fois plus grande et la modification d'une classe n'est pas une tâche triviale.
Chaque fois que vous voyez de nombreuses instructions if / else ou switch, vous devez penser au polymorphisme. Le code ci-dessous montre comment la logique de comptage des pattes peut être déplacée vers la méthode count () dans les classes Animal individuelles, et la méthode count () de la classe AnimalLegCounter utilise uniquement la méthode count () dans les classes Animal pour la faire adhérer au principe OCP en utilisant le polymorphisme comme indiqué ci-dessous.
Maintenant, si vous souhaitez ajouter plus d'animaux comme
le chien, le crabe, etc., tout ce que vous avez à faire est d'ajouter les
classes pertinentes comme
Dog, Crab, etc. implémentant la même
interface
Animal, et de fournir l'implémentation de la méthode count
(…). La classe
AnimalLegsCounter n'a pas du tout besoin d'être modifiée.
En d'autres termes, la classe
AnimalLegsCounter est fermée pour
modification mais ouverte par extension par l'ajout de nouvelles classes.
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 comments