ConstructiCat Logo
CodeBust.
Browse section ▾

Supprimer l’intermédiaire.

Problem

Une classe possède trop de méthodes qui se contentent de déléguer à d’autres objets.

Solution

Supprimez ces méthodes et obligez le client à appeler directement les méthodes finales.

##Example

Avant
Client Class Person getManager() Department
Après
Client Class Person +getDepartment() Department +getManager()

##Why Refactor

Pour décrire cette technique, nous utiliserons les termes de Masquer le délégué, à savoir :

  • Le serveur est l’objet auquel le client a un accès direct.

  • Le délégué est l’objet final qui contient la fonctionnalité dont le client a besoin.

Il existe deux types de problèmes :

  1. La classe-serveur ne fait rien par elle-même et ne crée qu’une complexité inutile. Dans ce cas, demandez-vous si cette classe est vraiment nécessaire.

  2. Chaque fois qu’une nouvelle fonctionnalité est ajoutée au délégué, vous devez créer une méthode déléguante correspondante dans la classe-serveur. Si de nombreuses modifications sont apportées, cela deviendra plutôt fastidieux.

##How to Refactor

  1. Créez un getter pour accéder à l’objet classe-déléguée depuis l’objet classe-serveur.

  2. Remplacez les appels aux méthodes déléguantes de la classe-serveur par des appels directs aux méthodes de la classe-déléguée.