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

37 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#рефакторинг #методы_рефакторинга
![[Pasted image 20250128084347.png]]
### **Проблема**
Класс имеет слишком много методов, которые просто делегируют работу другим объектам.
```javascript
manager = aPerson.manager;
class Person {
get manager() {return this.department.manager;}
}
```
### **Решение**
Удалите эти методы и заставьте клиента вызывать конечные методы напрямую.
```javascript
manager = aPerson.department.manager;
```
### **Причины рефакторинга**
Каждый раз, когда клиент хочет использовать новую функциональную возможность делегата, нужно добавить простой метод делегирования на сервер. После ряда добавлений функциональных возможностей такая пересылка начинает раздражать. Серверный класс оказывается просто [[Посредник|посредником]], и, возможно, пришло время клиенту работать с делегатом непосредственно.
### **Порядок рефакторинга**
1. Создайте геттер для доступа к объекту класса-делегата из объекта класса-сервера.
2. Замените вызовы делегирующих методов класса-сервера прямыми вызовами методов класса-делегата.
### **Борется с запахом**
- [[Посредник]]
### **Обратный рефакторинг**
- [[Сокрытие делегата (Hide Delegate)]]
### **Ссылки**
- https://refactoring.guru/ru/remove-middle-man
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]]