ConstructiCat Logo
CodeBust.
Browse section ▾

Extraire une superclasse.

Problem

Vous avez deux classes qui partagent des champs et des méthodes communs.

Solution

Créez une superclasse commune pour elles et déplacez-y tous les champs et méthodes identiques.

##Example

Avant
Department +getTotalAnnualCost()+getName()+getHeadCount() Employee +getAnnualCost()+getName()+getId()
Après
Party getAnnualCost()getName() Employee getAnnualCost()getId() Department getAnnualCost()getHeadCount()

##Why Refactor

Un type de duplication de code se produit lorsque deux classes accomplissent des tâches similaires de la même manière, ou accomplissent des tâches similaires de manières différentes. Les objets offrent un mécanisme intégré pour simplifier de telles situations grâce à l’héritage. Mais bien souvent, cette similarité passe inaperçue jusqu’à ce que les classes soient créées, ce qui oblige à mettre en place une structure d’héritage par la suite.

##Benefits

  • Déduplication du code. Les champs et méthodes communs « vivent » désormais à un seul endroit.

##How to Refactor

  1. Créez une superclasse abstraite.

  2. Utilisez Remonter un champ, Remonter une méthode et Remonter le corps du constructeur pour déplacer les fonctionnalités communes vers une superclasse. Commencez par les champs, car en plus des champs communs, vous devrez déplacer les champs utilisés dans les méthodes communes.

  3. Recherchez dans le code client les endroits où l’utilisation des sous-classes peut être remplacée par votre nouvelle classe (comme dans les déclarations de type).