Remonter une méthode.
Vos sous-classes ont des méthodes qui effectuent un travail similaire.
Rendez les méthodes identiques, puis déplacez-les vers la superclasse appropriée.
##Example
##Why Refactor
Les sous-classes ont grandi et évolué indépendamment les unes des autres, provoquant des champs et des méthodes identiques (ou presque identiques).
##Benefits
-
Élimine le code dupliqué. Si vous devez modifier une méthode, il vaut mieux le faire à un seul endroit plutôt que d'avoir à rechercher tous les doublons de la méthode dans les sous-classes.
-
Cette technique de refactorisation peut aussi être utilisée si, pour une raison quelconque, une sous-classe redéfinit une méthode de la superclasse mais effectue essentiellement le même travail.
##How to Refactor
-
Examinez les méthodes similaires dans les superclasses. Si elles ne sont pas identiques, mettez-les en forme pour qu'elles correspondent.
-
Si les méthodes utilisent un ensemble de paramètres différent, mettez les paramètres sous la forme que vous souhaitez voir dans la superclasse.
-
Copiez la méthode dans la superclasse. Vous pourriez alors constater que le code de la méthode utilise des champs et des méthodes qui n'existent que dans les sous-classes et qui ne sont donc pas disponibles dans la superclasse. Pour résoudre cela, vous pouvez :
-
Pour les champs : utilisez soit Remonter un champ, soit l'auto-encapsulation de champ pour créer des accesseurs et mutateurs dans les sous-classes ; déclarez ensuite ces accesseurs de manière abstraite dans la superclasse.
-
Pour les méthodes : utilisez soit Remonter une méthode, soit déclarez des méthodes abstraites pour elles dans la superclasse (notez que votre classe deviendra abstraite si elle ne l'était pas déjà).
-
-
Supprimez les méthodes des sous-classes.
-
Vérifiez les emplacements où la méthode est appelée. À certains endroits, vous pourrez peut-être remplacer l'utilisation d'une sous-classe par la superclasse.