Diferença entre manipulador, gerente e controlador

21

Existe alguma diferença entre nomear uma classe "Manipulador", "Gerente" ou "Controlador"? IE: PurchaseManager, PurchaseHandler, PurchaseController.

Esses bastantes transmitem o mesmo significado ou há uma clara diferença entre eles?

Se não houver uma resposta independente da linguagem, considere Java como a linguagem.

hpique
fonte
1
Mais contexto seria útil aqui. Muitas (muitas!) Estruturas têm definições bem claras das distinções. No entanto, não há definição universal por trás dessas palavras. Em que contexto você está trabalhando? Qual estrutura você está usando? Que linguagem você está usando?
7892 S.Lott
Linguagem esclarecida.
Hpique

Respostas:

15

Normalmente, um 'Controlador' é a interface entre um componente da interface do usuário e um modelo (por exemplo, Compra). Os controladores devem ser classes finas, fazendo pouco mais do que mapear eventos da interface do usuário para modelar funções.

Um "gerente" é um cheiro de código. A compra deve gerenciar a si própria ou pode ser gerenciada por uma classe proprietária, como Fornecedor ou Comprador.

Um 'Manipulador' é geralmente uma única função envolvida em um objeto. Isso é necessário ao programar em linguagens herdadas sem funções de primeira classe.

Kevin Cline
fonte
Embora eu também não goste do conceito de "gerente", acho que a lógica de não tê-lo lidando com sua própria lógica de negócios é que o programador deseja separar um bean / pojo / dto das complexas operações de negócios.
Sridhar Sarnobat
1
Embora eu concorde com você sobre o gerente do ponto de vista agnóstico do idioma, gostaria de acrescentar que um gerente pode ser o termo correto para uso em alguns casos. Por exemplo, não há problema em falar de gerentes do ponto de vista do protocolo, por exemplo. Para o SNMP, você tem um gerente "gerenciando" um conjunto de agentes. Este é o termo correto a ser usado neste caso. No entanto, isso justifica usos espontâneos do "Manager".
Patrik
7

Embora minha resposta não seja baseada na definição, vejo algo rotulado como "Controlador" como uma implementação exclusiva versus um "Manipulador" como inclusivo . Eu esperaria ver apenas uma existência de um "PurchaseController" e várias versões possíveis de um "PurchaseHandler".

Eu acho que outro nome comum para Controller é "Broker" - o que altera levemente a perspectiva dele.

David Savage
fonte
Obrigado por essas definições. Você colocou muito conhecimento em poucas linhas.
acearch