Autumn SALE

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

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

Проблема

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

Решение

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

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

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

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

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

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

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

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

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

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

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

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