Глянь мій новий курс по Git! Привіт! Глянь мій новий курс по Git! Привіт! Глянь мій новий курс по Git на GitByBit.com! Привіт! Хочеш класно освіжити Git? Глянь мій новий курс на GitByBit.com!

Видалення посередника

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

Проблема

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

Рішення

Видаліть ці методи і змусьте клієнта викликати кінцеві методи безпосередньо.

До
Remove Middle Man - Before
Після
Remove Middle Man - After

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

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

  • Сервер — це об’єкт, до якого клієнт має безпосередній доступ.

  • Делегат — це кінцевий об’єкт, який містить функціональність, потрібну клієнтові.

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

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

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

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

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

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