• Ramon Ferreira Silva

Controller – Padrões GRASP

Atualizado: 23 de Ago de 2019


Padrão Controller


O primeiro padrão do catalogo GRASP, é o Controller, este padrão é responsável por atribuir eventos do sistema a classes que que não estão relacionadas com interface com o usuário.


Atribuições da Controller

  1. Determina quais objetos são responsáveis por tratar eventos gerados na camada de interface com o usuário.

  2. Delega responsabilidades a outras classes e coordena a interação dos principais objetos.

  3. Funciona como uma fachada para interação com o sistema

  4. Determina quais operações o sistema e capaz de realizar.

  5. Determinar quais mensagens são enviadas ao usuário.


Exemplo de uso de uma Controller


Suponha que temos um formulário de cadastro, que possui alguns campos texto e um botão Salvar. Quando o usuário clica no botão, os sistema dispara um evento onClick, e a Controller  captura esse evento,  e faz uma chamada para a classe responsável por armazenar os  valores destes campos no banco de dados. Ao final, a classe de persistência informa que terminou  e a Controller então delega a um novo elemento de interface com usuário a tarefa de informar o termino da operação.



 Um objeto funciona como um Controller quando

  1. o objeto representa o sistema como um todo, ou;

  2. o objeto representa um caso de uso inteiro, com por exemplo operações de cadastro de dados, lidando com toda a sequencia de eventos.


Beneficios do Controller

  1. você pode reutilizar o mesmo Controller para todas as operações que envolva um determinado objeto de domínio.

  2. usar para manter um estado de um caso de uso durante uma sequência de operações.

  3. usar para controlar um sequência de atividades do sistema.


Controller Inchados

  1. possui muitas responsabilidades, violando a SRP. ( exemplo controlar a persistência de muitos objetos de domínio heterogêneos)

  2. realiza muitas tarefas ao invés de delegar a outros objetos.


Conclusão


Este padrão, funciona como uma camada de indireção para eventos do sistema. Deixando os eventos gerados pela Interface desacoplados dos objetos responsáveis por tratar a requisição, tornando o sistema mais flexível de de fácil manutenção.


#GRASP #patterns #Refatoração #PadrõesdeProjeto #BoasPráticas #ArquiteturadeSoftware

71 visualizações