---
title: "Remover Intermediário"
type: "refactoring-technique"
slug: "remove-middle-man"
url: "http://localhost:3000/pt-br/remove-middle-man.md"
category: "Moving Features between Objects"
description: "Problema: Uma classe tem métodos demais que simplesmente delegam para outros objetos. Solução: Exclua esses métodos e force o cliente a chamar os métodos finais diretamente."
---
# Remover Intermediário

> Problema: Uma classe tem métodos demais que simplesmente delegam para outros objetos. Solução: Exclua esses métodos e force o cliente a chamar os métodos finais diretamente.

## Problem

Uma classe tem métodos demais que simplesmente delegam para outros objetos.

## Solution

Exclua esses métodos e force o cliente a chamar os métodos finais diretamente.

## Why Refactor

Para descrever esta técnica, usaremos os termos de [Esconder Delegação](/pt-br/hide-delegate), que são:

* _Servidor_ é o objeto ao qual o cliente tem acesso direto.
* _Delegado_ é o objeto final que contém a funcionalidade necessária ao cliente.

Há dois tipos de problemas:

1. A _classe-servidora_ não faz nada por si só e simplesmente cria complexidade desnecessária. Nesse caso, reflita se essa classe é realmente necessária.
2. Toda vez que uma nova funcionalidade é adicionada ao _delegado_, você precisa criar um método delegador para ela na _classe-servidora_. Se muitas mudanças forem feitas, isso será bastante cansativo.

## How to Refactor

1. Crie um getter para acessar o objeto da _classe-delegada_ a partir do objeto da _classe-servidora_.
2. Substitua as chamadas aos métodos delegadores na _classe-servidora_ por chamadas diretas aos métodos da _classe-delegada_.
## Relations

**Opposite refactorings**

- [Ocultar Delegação](/pt-br/hide-delegate.md)

**Eliminates smells**

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

