Разница между обработчиком, менеджером и контроллером

21

Есть ли разница между именованием класса «Обработчик», «Менеджер» или «Контроллер»? IE: PurchaseManager, PurchaseHandler, PurchaseController.

Достаточно ли одного и того же значения, или между ними есть четкая разница?

Если нет никакого независимого от языка ответа, рассмотрите Java как язык.

hpique
источник
1
Больше контекста было бы полезно здесь. Многие (многие!) Фреймворки имеют довольно четкие определения различий. Однако за этими словами нет универсального определения. В каком контексте вы работаете? Какие рамки вы используете? Какой язык вы используете?
С.Лотт
Уточненный язык.
hpique
Связанный: programmers.stackexchange.com/questions/81981/…
Майк Баранчак

Ответы:

15

Обычно «Контроллер» - это интерфейс между компонентом пользовательского интерфейса и моделью (например, Закупка). Контроллеры должны быть тонкими классами, делая не больше, чем отображение событий пользовательского интерфейса на функции модели.

«Менеджер» - это запах кода. Покупка должна управляться сама собой, или она может управляться владельцем класса, таким как Vendor или Buyer.

«Обработчик» - это обычно отдельная функция, заключенная в объект. Они необходимы при программировании на устаревших языках без первоклассных функций.

Кевин Клайн
источник
Хотя мне тоже не нравится понятие «менеджер», я думаю, что причина того, что он не обрабатывает собственную бизнес-логику, заключается в том, что программист хочет отделить bean / pojo / dto от сложных бизнес-операций.
Шридхар Сарнобат
1
Хотя я согласен с вами в отношении менеджера с точки зрения языковой независимости, я хотел бы добавить, что в некоторых случаях менеджер может быть правильным термином для использования. Например, можно говорить о менеджерах с точки зрения протокола, например. Для SNMP у вас есть менеджер, «управляющий» набором агентов. Это правильный термин для использования в этом случае. Это, однако, оправдывает спонтанное использование «Менеджера».
Патрик
7

Хотя мой ответ не основан на определении, я рассматриваю нечто, помеченное как «Контроллер», как эксклюзивную реализацию, а не «Обработчик» как включающий . Я ожидаю увидеть только одно существование «PurchaseController» и несколько возможных версий «PurchaseHandler».

Я думаю, что другое общее название для Controller - «Брокер», что немного меняет взгляд на него.

Дэвид Сэвидж
источник
Спасибо за эти определения. Вы вложили много знаний в несколько строк.
acearch