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


21

Чи є різниця між називанням класів "Обробник", "Менеджер" чи "Контролер"? IE: PurchaseManager, PurchaseHandler, PurchaseController.

Чи мають ці достатки однаковий зміст чи є чітка різниця між ними?

Якщо відповіді немає на мовно-агностичній відповіді, розгляньте Java як мову.


1
Тут буде корисним більше контексту. Багато (багато!) Рамок мають досить чітке визначення відмінностей. Однак за цими словами немає універсального визначення. У якому контексті ти працюєш? Яку основу ви використовуєте? Якою мовою ви користуєтесь?
S.Lott

Уточнена мова.
hpique

Відповіді:


15

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

"Менеджер" - запах коду. Покупкою слід керувати самостійно, або ним може керувати власний клас, як-от постачальник або покупець.

"Обробник", як правило, є однією функцією, загорнутою в об'єкт. Вони потрібні при програмуванні на старих мовах без першокласних функцій.


Хоча мені також не подобається концепція "Менеджера", я думаю, що обґрунтуванням того, щоб він не керувався власною логікою бізнесу, є те, що програміст хоче відокремити боб / pojo / dto від складних бізнес-операцій.
Шрідхар Сарнобат

1
Хоча я погоджуюся з вами щодо Менеджера з точки зору мовної агностики, я хотів би додати, що в деяких випадках менеджер може бути правильним терміном. Наприклад, нормально, наприклад, говорити про менеджерів з точки зору протоколу. Для SNMP у вас є менеджер, який "управляє" набором агентів. Це правильний термін, який слід використовувати в цьому випадку. Це, однак, виправдовує спонтанні використання "Менеджера".
патрік

7

Хоча моя відповідь не ґрунтується на визначенні, я розглядаю щось, позначене як "Контролер", як ексклюзивну реалізацію проти "Обробника" як інклюзивну . Я б очікував побачити лише одне існування "PurchaseController" та кілька можливих версій "PurchaseHandler".

Я думаю, що інша поширена назва Controller - "Брокер" - це трохи змінює перспективу на це.


Дякую за ці визначення. Ви вклали багато знань за кілька рядків.
ацеарх
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.