Base/Knowledges/IT/Рефакторинг/Методы рефакторинга/Удаление посредника (Remove Middle Man).md
2026-02-23 19:52:05 +03:00

2.0 KiB
Raw Blame History

#рефакторинг #методы_рефакторинга

!Pasted image 20250128084347.png

Проблема

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

manager = aPerson.manager;

class Person {
	get manager() {return this.department.manager;}
}

Решение

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

manager = aPerson.department.manager;

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

Каждый раз, когда клиент хочет использовать новую функциональную возможность делегата, нужно добавить простой метод делегирования на сервер. После ряда добавлений функциональных возможностей такая пересылка начинает раздражать. Серверный класс оказывается просто Посредник, и, возможно, пришло время клиенту работать с делегатом непосредственно.

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

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

Борется с запахом

Обратный рефакторинг

Ссылки