GRASP Flashcards
GRASP
General Responsibility Assignment Software Patterns
Distribuição de Responsabilidades
Obrigações que um objeto possui quando se leva em consideração seu papel
RDD
Responsibility Driven Design - Responsabilidades claramente definidas e bem compreendidas
Expert
Determina quando devemos delegar a responsabilidade a outro objeto especialista no assunto, domínio (expert). Identifica quais classes possuem as informações necessárias para lidar com a tarefa de forma eficiente.
A medida que os sistemas crescem podemos nos ver colocando muita lógica em nossos controladores (inchados). O Expert Pattern permite criar uma classe especializada em uma parte específica. (no spring é o service)
Controller
Atribui responsabilidade para lidar com eventos do sistema. Gerencia o fluxo de interações e coordena as ações entre as diferentes partes. Evita duplicação de código e mantém as regras de negócio centralizadas. Permite que as interfaces sejam separadas de forma clara dos objetos de negócio. (interface web, android, usando apis de negócio).
Interface entre o usuário e chamada de negócio (volante do carro).
Creator
Determina qual classe deve ser responsável pela criação do objeto.
Permite injeção de dependência e baixo acoplamento. Equivale aos criacionais do GoF.
High Coesion
Classes devem focar apenas em sua responsabilidade.
Low Coupling
Classes não devem depender de outros objetos concretos mas sim de abstrações para permitir que haja mudança sem impacto