Ocultar Delegado.
El cliente obtiene el objeto B a partir de un campo o método del objeto A. Después, el cliente llama a un método del objeto B.
Crea un nuevo método en la clase A que delegue la llamada al objeto B. Ahora el cliente no conoce la clase B ni depende de ella.
##Example
##Why Refactor
Para empezar, veamos algo de terminología:
-
Servidor es el objeto al que el cliente tiene acceso directo.
-
Delegado es el objeto final que contiene la funcionalidad que necesita el cliente.
Aparece una cadena de llamadas cuando un cliente solicita un objeto a otro objeto, después ese segundo objeto solicita otro, y así sucesivamente. Estas secuencias de llamadas obligan al cliente a navegar por la estructura de clases. Cualquier cambio en estas interrelaciones requerirá cambios en el lado del cliente.
##Benefits
- Oculta la delegación al cliente. Cuanto menos necesite saber el código cliente sobre los detalles de las relaciones entre objetos, más fácil será realizar cambios en tu programa.
##How to Refactor
-
Por cada método de la clase delegada llamado por el cliente, crea un método en la clase servidora que delegue la llamada a la clase delegada.
-
Cambia el código cliente para que llame a los métodos de la clase servidora.
-
Si tus cambios liberan al cliente de la necesidad de la clase delegada, puedes eliminar de la clase servidora el método de acceso a la clase delegada (el método que originalmente se usaba para obtener la clase delegada).