---
title: "Remplacer la délégation par l’héritage"
type: "refactoring-technique"
slug: "replace-delegation-with-inheritance"
url: "http://localhost:3000/fr/replace-delegation-with-inheritance.md"
category: "Dealing with Generalization"
description: "Problème : une classe contient de nombreuses méthodes simples qui délèguent à toutes les méthodes d’une autre classe. Solution : faites de la classe un héritier du délégué, ce qui rend les méthodes de délégation inutiles."
---
# Remplacer la délégation par l’héritage

> Problème : une classe contient de nombreuses méthodes simples qui délèguent à toutes les méthodes d’une autre classe. Solution : faites de la classe un héritier du délégué, ce qui rend les méthodes de délégation inutiles.

## Problem

Une classe contient de nombreuses méthodes simples qui délèguent à toutes les méthodes d’une autre classe.

## Solution

Faites de la classe un héritier du délégué, ce qui rend les méthodes de délégation inutiles.

## Why Refactor

La délégation est une approche plus flexible que l’héritage, car elle permet de modifier la manière dont la délégation est implémentée et d’y placer également d’autres classes. Néanmoins, la délégation cesse d’être avantageuse si vous déléguez des actions à une seule classe et à toutes ses méthodes publiques.

Dans ce cas, si vous remplacez la délégation par l’héritage, vous débarrassez la classe d’un grand nombre de méthodes de délégation et vous vous évitez d’avoir à les créer pour chaque nouvelle méthode de la classe déléguée.

## Benefits

* Réduit la longueur du code. Toutes ces méthodes de délégation ne sont plus nécessaires.

## How to Refactor

1. Faites de la classe une sous-classe de la classe déléguée.
2. Placez l’objet courant dans un champ contenant une référence vers l’objet délégué.
3. Supprimez les méthodes de simple délégation une par une. Si leurs noms étaient différents, utilisez [Renommer une méthode](/fr/rename-method) pour donner à toutes les méthodes un nom unique.
4. Remplacez toutes les références au champ délégué par des références à l’objet courant.
5. Supprimez le champ délégué.
## Relations

**Similar techniques**

- [Supprimer l’intermédiaire](/fr/remove-middle-man.md)

**Opposite refactorings**

- [Remplacer l'héritage par la délégation](/fr/replace-inheritance-with-delegation.md)

**Eliminates smells**

- [Intimité inappropriée](/fr/smells/inappropriate-intimacy.md)

