Посредник
Также известен как: Middle Man
Симптомы и признаки
Если класс выполняет одно действие — делегирует работу другому классу — стоит задуматься, зачем он вообще существует.
![](/images/refactoring/content/smells/middle-man-01.png?id=14c65845c4e0cf03e7e9e48108090c98)
Причины появления
Данный запах может быть результатом фанатичной борьбы с цепочками вызовов.
Кроме того, бывает так, что вся полезная нагрузка класса постепенно перемещается в другие классы, в результате кроме делегирующих методов в нем ничего не остается.
Лечение
- Если большую часть методов класс делегирует другому классу, нужно воспользоваться удалением посредника.
Выигрыш
- Уменьшение размера кода.
![](/images/refactoring/content/smells/middle-man-02.png?id=f507c0fd9a7bde8df8c22b9027d0a404)
Не стоит трогать, если...
Не удаляйте посредников, которые были созданы осознанно:
-
Посредник мог быть введён для избавления от нежелательной зависимости между классами.
-
Некоторые паттерны проектирования намеренно создают посредников (например, Заместитель или Декоратор).