ConstructiCat Logo
CodeBust.
Browse section ▾

Descendre la méthode.

Problem

Un comportement implémenté dans une superclasse n’est-il utilisé que par une seule (ou quelques) sous-classe(s) ?

Solution

Déplacez ce comportement vers les sous-classes.

##Example

Avant
Unit +getFuel() Soldier Tank
Après
Unit Soldier Tank getFuel()

##Why Refactor

Au départ, une certaine méthode était censée être universelle pour toutes les classes, mais en réalité elle n’est utilisée que dans une seule sous-classe. Cette situation peut se produire lorsque des fonctionnalités prévues ne se concrétisent pas.

De telles situations peuvent également survenir après l’extraction (ou la suppression) partielle de fonctionnalités d’une hiérarchie de classes, laissant une méthode qui n’est utilisée que dans une seule sous-classe.

Si vous constatez qu’une méthode est nécessaire à plusieurs sous-classes, mais pas à toutes, il peut être utile de créer une sous-classe intermédiaire et d’y déplacer la méthode. Cela permet d’éviter la duplication de code qui résulterait de la descente de la méthode vers toutes les sous-classes.

##Benefits

  • Améliore la cohérence des classes. Une méthode se trouve là où vous vous attendez à la voir.

##How to Refactor

  1. Déclarez la méthode dans une sous-classe et copiez-y son code depuis la superclasse.

  2. Supprimez la méthode de la superclasse.

  3. Trouvez tous les endroits où la méthode est utilisée et vérifiez qu’elle est appelée depuis la sous-classe appropriée.