Princípio Controlador

Problema: Qual é o primeiro objeto, além da camada de UI, que recebe e coordena (“Controla”) uma operação no sistema?

Solução: Atribua a responsabilidade a uma classe que representa uma das seguintes escolhas:

  • Representa o “sistema global”, um “objeto raiz”, um dispositivo dentro do qual o software está sendo processado, ou um subsistema importante – essas são todas variantes de um controlador fachada (facade controller)
  • Representa um cenário de um caso de uso dentro do qual ocorre o evento do sistema, frequentemente denominado TratadoDo<nomedecasodeuso>, CoordenadorDe<nomedecasodeuso> ou SessaoDo<nomedecasodeuso>
    • Use a mesma classe controladora para todos os eventos do sistema do mesmo cenário do caso de uso.
    • Informalmente, uma sessão é uma instância de convenção com um ator. Sessões podem ser de qualquer tamanho, mas frequentemente são organizadas em casos de uso.

Um controlador é o primeiro objeto além da camada de UI que é responsável por receber ou tratar uma mensagem de operação do sistema. Esse é um padrão de delegação, de acordo com a premissa que a camada de UI não deve conter a lógica da aplicação, os objetos da camada de UI precisam delegar essa solicitação a outra camada.

Quando e como utilizar!
Os Controladores Fachada são adequados quando não exitem “demasiados” eventos de sistema.
Nesse caso pode-se optar por Controladores de Caso de Uso para evitar tonar os controladores fachada sobrecarregado com excesso de responsabilidade, evitando a baixa coesão e alto acoplamento.

Em 1967 Ivar Jacobson desenvolve uma metodologia onde existem os conceitos (opcionais) de classes de fronteira, classes de controle e classes de entidade. Os objetos de fronteiras, são abstrações das interfaces. Os objetos de entidade são objetos do domínio. E os objetos de controles são tratadores de caso de uso.

Conceito X Tecnologia
O Princípio Controlador apresentado difere de controladores de tecnologias como ASP.NET MVC, ASP.NET WebForms, Struts (JAVA) entre outras.
O code behind do WebForms ou são tratadores de eventos do navegador, já os controllers (Action) do MVC são controladores de interação e fluxo de página. Estes deveram obter uma referência para objetos controladores do domínio a fim de obter uma Separação Modelo-Visão.

Vantagens

  • Aumento da possibilidade de reutilização e de interfaces “plugáveis” – essa vantagem garante que logica de aplicação não seja tratada na interface.
  • Melhora a forma de gerenciamento de sobre o estado do caso de uso – permite garantir que uma determinada chamada (método) não irá ocorrer até que outra tenha sido executada.

Padrões Relacionados

  • Commando
  • Fachada
  • Camadas
  • Invenção Pura
Be Sociable, Share!
  1. Importante conceito de arquitetura. Valeria ter um diagrama e uma pequena correção: é “Struts” e não “Structs”. Go ahead !

  2. Falae Edu. Pode deixar os próximos posts vão sair com diagramas.
    E o “Struts” esta corrigido, foi um erro de digitação, escrever artigo de madrugada causa esses efeitos colaterais. :mrgreen:
    Vlw.

Deixe um comentario


OBS - Você pode usar estes atributos HTML e tags para formatar seus comentário:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">