Unterschied zwischen Handler, Manager und Controller

21

Gibt es einen Unterschied zwischen der Benennung einer Klasse "Handler", "Manager" oder "Controller"? IE: PurchaseManager, PurchaseHandler, PurchaseController.

Vermitteln diese Genügen die gleiche Bedeutung oder gibt es einen deutlichen Unterschied zwischen ihnen?

Wenn es keine sprachunabhängige Antwort gibt, betrachten Sie Java als Sprache.

hpique
quelle
1
Mehr Kontext wäre hier hilfreich. Viele (viele!) Frameworks haben ziemlich klare Definitionen der Unterscheidungen. Es gibt jedoch keine universelle Definition hinter diesen Wörtern. In welchem ​​Kontext arbeiten Sie? Welches Framework verwenden Sie? Welche sprache sprichst du
S.Lott
Sprache geklärt.
hpique

Antworten:

14

Normalerweise ist ein Controller die Schnittstelle zwischen einer Benutzerschnittstellenkomponente und einem Modell (z. B. Kauf). Bei Controllern sollte es sich um schlanke Klassen handeln, die nur das Zuordnen von Benutzeroberflächenereignissen zu Modellfunktionen ausführen.

Ein "Manager" ist ein Code-Geruch. Der Kauf sollte sich selbst verwalten, oder er könnte von einer besitzenden Klasse wie dem Verkäufer oder dem Käufer verwaltet werden.

Ein 'Handler' ist normalerweise eine einzelne Funktion, die in ein Objekt eingebunden ist. Diese werden benötigt, wenn in Legacy-Sprachen ohne erstklassige Funktionen programmiert wird.

Kevin Cline
quelle
Auch wenn ich das Konzept eines "Managers" nicht mag, denke ich, dass der Programmierer ein Bean / Pojo / Dto von den komplexen Geschäftsabläufen trennen möchte, damit es nicht seine eigene Geschäftslogik handhabt.
Sridhar Sarnobat
1
Obwohl ich Ihnen in Bezug auf Manager aus sprachunabhängiger Sicht zustimme, möchte ich hinzufügen, dass ein Manager in einigen Fällen ein korrekter Begriff sein kann. Zum Beispiel ist es in Ordnung, von Managern zum Beispiel aus protokollarischer Sicht zu sprechen. Für SNMP "verwaltet" ein Manager eine Reihe von Agenten. Dies ist der richtige Begriff, der in diesem Fall verwendet wird. Dies rechtfertigt jedoch die spontane Verwendung von "Manager".
patrik
7

Während meine Antwort nicht auf Definition basiert, betrachte ich etwas, das als "Controller" bezeichnet wird, als exklusive Implementierung im Vergleich zu einem "Handler" als inklusive . Ich würde nur eine Existenz eines "PurchaseControllers" und mehrere mögliche Versionen eines "PurchaseHandlers" erwarten.

Ich denke, ein anderer gebräuchlicher Name für Controller ist "Broker" - was die Perspektive leicht verändert.

David Savage
quelle
Vielen Dank für diese Definitionen. Sie haben in wenigen Zeilen viel Wissen eingebracht.
Suchen Sie