---
title: "Eliminar intermediario"
type: "refactoring-technique"
slug: "remove-middle-man"
url: "http://localhost:3000/es/remove-middle-man.md"
category: "Moving Features between Objects"
description: "Problema: Una clase tiene demasiados métodos que simplemente delegan en otros objetos. Solución: Elimina estos métodos y obliga al cliente a llamar directamente a los métodos finales."
---
# Eliminar intermediario

> Problema: Una clase tiene demasiados métodos que simplemente delegan en otros objetos. Solución: Elimina estos métodos y obliga al cliente a llamar directamente a los métodos finales.

## Problem

Una clase tiene demasiados métodos que simplemente delegan en otros objetos.

## Solution

Elimina estos métodos y obliga al cliente a llamar directamente a los métodos finales.

## Why Refactor

Para describir esta técnica, usaremos los términos de [Ocultar delegado](/es/hide-delegate), que son:

* _Servidor_ es el objeto al que el cliente tiene acceso directo.
* _Delegado_ es el objeto final que contiene la funcionalidad que el cliente necesita.

Hay dos tipos de problemas:

1. La _clase servidora_ no hace nada por sí misma y simplemente genera complejidad innecesaria. En este caso, reflexiona sobre si esta clase es realmente necesaria.
2. Cada vez que se añade una nueva característica al _delegado_, necesitas crear un método delegante para ella en la _clase servidora_. Si se realizan muchos cambios, esto resultará bastante tedioso.

## How to Refactor

1. Crea un getter para acceder al objeto de la _clase delegada_ desde el objeto de la _clase servidora_.
2. Sustituye las llamadas a los métodos delegantes de la _clase servidora_ por llamadas directas a los métodos de la _clase delegada_.
## Relations

**Opposite refactorings**

- [Ocultar Delegado](/es/hide-delegate.md)

**Eliminates smells**

- [Hombre en el medio](/es/smells/middle-man.md)

