Różnica między programem obsługi, menedżerem i kontrolerem

21

Czy jest jakaś różnica między nazwaniem klasy „moduł obsługi”, „menedżer” lub „kontroler”? IE: PurchaseManager, PurchaseHandler, PurchaseController.

Czy te środki przekazu mają takie samo znaczenie, czy istnieje wyraźna różnica między nimi?

Jeśli nie ma odpowiedzi niezależnej od języka, rozważ Java jako język.

hpique
źródło
1
Pomocny byłby tutaj większy kontekst. Wiele (wiele!) Ram ma dość jasne definicje rozróżnień. Jednak za tymi słowami nie ma uniwersalnej definicji. W jakim kontekście pracujesz? Z jakich ram korzystasz? Jakiego języka używasz?
S.Lott,
Wyjaśniony język.
hpique

Odpowiedzi:

15

Zwykle „kontroler” to interfejs między komponentem interfejsu użytkownika a modelem (np. Zakup). Kontrolery powinny być cienkimi klasami, wykonującymi niewiele więcej niż mapowanie zdarzeń interfejsu użytkownika na funkcje modelu.

„Menedżer” to zapach kodu. Zakup powinien sam się zarządzać lub może być zarządzany przez klasę będącą właścicielem, taką jak Sprzedawca lub Kupujący.

„Program obsługi” jest zwykle pojedynczą funkcją zawiniętą w obiekt. Są one potrzebne podczas programowania w starszych językach bez pierwszorzędnych funkcji.

Kevin Cline
źródło
Chociaż ja też nie podoba mi się koncepcja „Managera”, myślę, że uzasadnieniem braku obsługi jej własnej logiki biznesowej jest to, że programista chce oddzielić komponent bean / pojo / dto od złożonych operacji biznesowych.
Sridhar Sarnobat
1
Chociaż zgadzam się z tobą w sprawie menedżera z punktu widzenia agnostyki językowej, chciałbym dodać, że menedżer może być poprawnym terminem w niektórych przypadkach. Na przykład można mówić na przykład o menedżerach z punktu widzenia protokołu. W przypadku SNMP masz menedżera „zarządzającego” zestawem agentów. W tym przypadku jest to właściwy termin. Uzasadnia to jednak spontaniczne użycie „Managera”.
patrik
7

Chociaż moja odpowiedź nie jest oparta na definicji, widzę coś oznaczonego jako „kontroler” jako implementację wyłączną w porównaniu z „obsługą” jako włącznie . Spodziewałbym się zobaczyć tylko jedno istnienie „PurchaseController” i wiele możliwych wersji „PurchaseHandler”.

Myślę, że inną popularną nazwą kontrolera jest „Broker” - co nieco zmienia jego perspektywę.

David Savage
źródło
Dziękuję za te definicje. Włożyłeś dużo wiedzy w kilku liniach.
Acearch