Friend spotlight!
Whimsical Animations course
Friend spotlight!
NEW Whimsical Animations course
Friend spotlight! NEW Whimsical Animations course
huge discount only this week
Friend spotlight! Want to make your project stand out? NEW Whimsical Animations course huge discount only this week

Удаление посредника

Также известен как: Remove Middle Man

Проблема

Класс имеет слишком много методов, которые просто делегируют работу другим объектам.

Решение

Удалите эти методы и заставьте клиента вызывать конечные методы напрямую.

До
Remove Middle Man - Before
После
Remove Middle Man - After

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

В этом рефакторинге мы будем использовать названия из сокрытия делегирования, а именно:

  • Сервер — это объект, к которому клиент имеет непосредственный доступ.

  • Делегат — это конечный объект, который содержит функциональность, нужную клиенту.

Существует два вида проблем:

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

  2. Каждый раз, когда в делегате появляется новая фича, для нее нужно создавать делегирующий метод в классе-сервере. Это бывает накладно при большом количестве изменений.

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

  1. Создайте геттер для доступа к объекту класса-делегата из объекта класса-сервера.

  2. Замените вызовы делегирующих методов класса-сервера прямыми вызовами методов класса-делегата.