Удаление посредника
Проблема
Класс имеет слишком много методов, которые просто делегируют работу другим объектам.
Решение
Удалите эти методы и заставьте клиента вызывать конечные методы напрямую.
Причины рефакторинга
В этом рефакторинге мы будем использовать названия из сокрытия делегирования, а именно:
-
Сервер — это объект, к которому клиент имеет непосредственный доступ.
-
Делегат — это конечный объект, который содержит функциональность, нужную клиенту.
Существует два вида проблем:
-
Класс-сервер ничего не делает сам по себе, создавая бесполезную сложность. В этом случае стоит задуматься, нужен ли этот класс вообще.
-
Каждый раз, когда в делегате появляется новая фича, для нее нужно создавать делегирующий метод в классе-сервере. Это бывает накладно при большом количестве изменений.
Порядок рефакторинга
-
Создайте геттер для доступа к объекту класса-делегата из объекта класса-сервера.
-
Замените вызовы делегирующих методов класса-сервера прямыми вызовами методов класса-делегата.