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

Importante conceito de arquitetura. Valeria ter um diagrama e uma pequena correção: é “Struts” e não “Structs”. Go ahead !
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.
Vlw.