Також відомий як Remove Middle Man

Рефакторинг Видалення посередника

Проблема

Клас має занадто багато методів, які просто делегують роботу іншим об'єктам.

Рішення

Видаліть ці методи і змусьте клієнта викликати кінцеві методи безпосередньо.
До
Remove Middle Man - Before
Після
Remove Middle Man - After

Причини рефакторингу

У цьому рефакторингу ми використаємо назви з «приховання делегування» (Hide delegate), а саме:

сервер — це об'єкт, до якого клієнт має безпосередній доступ; — делегат — кінцевий об'єкт, який містить функціональність, потрібну клієнтові.

Існує два різновиди проблем:

  1. Клас-сервер нічого не робить сам по собі, створюючи зайву складність. В цьому випадку варто замислитися, чи потрібний цей клас взагалі.

  2. Кожного разу, коли в делегаті з'являється нова фіча, для неї треба створювати делегуючий метод у класі-сервері. Це може бути невигідно при великій кількості змін.

Порядок рефакторингу

  1. Створіть геттер для доступу до об'єкту класу-делегату з об'єкту класу-сервера.

  2. Замініть виклики делегуючих методів класу-серверу прямими викликами методів класу-делегату.

Замучились читати?

Збігайте за подушкою, в нас тут контенту приблизно на 7 годин читання.

Або спробуйте наш новий інтерактивний курс з рефакторингу. Він більш інформативний та набагато цікавіший за банальний тест.

Дізнатися більше...

Живий приклад

Перший раз у нас? Нічого страшного!

У нас тут все просто – цей інтерактивний приклад дуже схожий на відео (хоча й виглядає набагато крутіше).

  1. Натискаєте велику кнопку "Почати", а далі слідуєте усім підказкам.
  2. Ви можете перемотувати програвання, використовуючи стрілки зліва.
  3. Окрім того, ви можете подивитися різницю між стартовим та отриманим кодом, натиснувши кнопку ока ().
  4. Кнопка компіляції та тестування () дає змогу перевірити код на наявність помилок.