---
title: "Substituir Delegação por Herança"
type: "refactoring-technique"
slug: "replace-delegation-with-inheritance"
url: "http://localhost:3000/pt-br/replace-delegation-with-inheritance.md"
category: "Dealing with Generalization"
description: "Problema: Uma classe contém muitos métodos simples que delegam a todos os métodos de outra classe. Solução: Faça a classe herdar do delegado, o que torna os métodos delegadores desnecessários."
---
# Substituir Delegação por Herança

> Problema: Uma classe contém muitos métodos simples que delegam a todos os métodos de outra classe. Solução: Faça a classe herdar do delegado, o que torna os métodos delegadores desnecessários.

## Problem

Uma classe contém muitos métodos simples que delegam a todos os métodos de outra classe.

## Solution

Faça a classe herdar do delegado, o que torna os métodos delegadores desnecessários.

## Why Refactor

A delegação é uma abordagem mais flexível que a herança, já que permite mudar como a delegação é implementada e colocar outras classes ali também. Mesmo assim, a delegação deixa de ser benéfica se você delega ações a apenas uma classe e a todos os seus métodos públicos.

Nesse caso, ao substituir a delegação por herança, você limpa a classe de um grande número de métodos delegadores e se poupa de precisar criá-los para cada novo método da classe delegada.

## Benefits

* Reduz o tamanho do código. Todos esses métodos delegadores deixam de ser necessários.

## How to Refactor

1. Faça a classe ser uma subclasse da classe delegada.
2. Coloque o objeto atual em um campo que contém uma referência ao objeto delegado.
3. Exclua um a um os métodos de delegação simples. Se seus nomes eram diferentes, use [Renomear Método](/pt-br/rename-method) para dar a todos os métodos um único nome.
4. Substitua todas as referências ao campo delegado por referências ao objeto atual.
5. Remova o campo delegado.
## Relations

**Similar techniques**

- [Remover Intermediário](/pt-br/remove-middle-man.md)

**Opposite refactorings**

- [Substituir Herança por Delegação](/pt-br/replace-inheritance-with-delegation.md)

**Eliminates smells**

- [Intimidade Inapropriada](/pt-br/smells/inappropriate-intimacy.md)

