Diferencia entre controlador, gerente y controlador

21

¿Hay alguna diferencia entre nombrar una clase "Handler", "Manager" o "Controller"? IE: PurchaseManager, PurchaseHandler, PurchaseController.

¿Estos suficientes transmiten el mismo significado o hay una clara diferencia entre ellos?

Si no hay una respuesta independiente del lenguaje, considere Java como el lenguaje.

hpique
fuente
1
Más contexto sería útil aquí. Muchos (¡muchos!) Marcos tienen definiciones bastante claras de las distinciones. Sin embargo, no hay una definición universal detrás de estas palabras. ¿En qué contexto estás trabajando? ¿Qué marco estás usando? Qué idioma estás usando?
S.Lott
Lenguaje clarificado.
hpique

Respuestas:

15

Por lo general, un "controlador" es la interfaz entre un componente de interfaz de usuario y un modelo (por ejemplo, compra). Los controladores deben ser clases delgadas, haciendo poco más que mapear eventos de interfaz de usuario para modelar funciones.

Un "gerente" es un olor a código. La compra debe administrarse sola, o podría ser administrada por una clase propietaria, como un vendedor o un comprador.

Un 'controlador' suele ser una función única envuelta en un objeto. Estos son necesarios cuando se programa en lenguajes heredados sin funciones de primera clase.

Kevin Cline
fuente
Si bien a mí tampoco me gusta el concepto de 'Gerente', creo que la razón por la que no debe manejar su propia lógica de negocios es que el programador quiere separar un bean / pojo / dto de las operaciones comerciales complejas.
Sridhar Sarnobat
1
Si bien estoy de acuerdo con usted sobre el Administrador desde un punto de vista agnóstico del lenguaje, me gustaría agregar que un Administrador puede ser el término correcto para usar en algunos casos. Por ejemplo, está bien hablar de gerentes desde un punto de vista de protocolo, por ejemplo. Para SNMP, tiene un administrador que "administra" un conjunto de agentes. Este es el término correcto para usar en este caso. Sin embargo, esto justifica los usos espontáneos de "Manager".
patrik
7

Si bien mi respuesta no se basa en la definición, veo algo etiquetado como "Controlador" como una implementación exclusiva frente a un " Controlador " como inclusivo . Esperaría ver solo una existencia de un "PurchaseController" y múltiples versiones posibles de un "PurchaseHandler".

Creo que otro nombre común para Controller es "Broker", que altera ligeramente la perspectiva.

David Savage
fuente
Gracias por estas definiciones. Has puesto mucho conocimiento en pocas líneas.
Acearch