Cacher le délégué.
Le client obtient l'objet B à partir d'un champ ou d'une méthode de l'objet A. Le client appelle ensuite une méthode de l'objet B.
Créez une nouvelle méthode dans la classe A qui délègue l'appel à l'objet B. Désormais, le client ne connaît plus la classe B et n'en dépend plus.
##Example
##Why Refactor
Commençons par la terminologie :
-
Le serveur est l'objet auquel le client a directement accès.
-
Le délégué est l'objet final qui contient les fonctionnalités dont le client a besoin.
Une chaîne d'appels apparaît lorsqu'un client demande un objet à un autre objet, puis que ce second objet en demande un autre, et ainsi de suite. Ces séquences d'appels obligent le client à naviguer dans la structure des classes. Tout changement dans ces relations imposera des modifications du côté client.
##Benefits
- Masque la délégation au client. Moins le code client a besoin de connaître les détails des relations entre les objets, plus il est facile d'apporter des modifications à votre programme.
##How to Refactor
-
Pour chaque méthode de la classe déléguée appelée par le client, créez une méthode dans la classe serveur qui délègue l'appel à la classe déléguée.
-
Modifiez le code client afin qu'il appelle les méthodes de la classe serveur.
-
Si vos modifications libèrent le client de toute dépendance à la classe déléguée, vous pouvez supprimer de la classe serveur la méthode d'accès à la classe déléguée (la méthode initialement utilisée pour obtenir la classe déléguée).