Padrões Grasp Flashcards
Qual padrão tem a intenção de determinar qual classe deve ser responsável por criar instâncias de uma determinada classe?
Creator (Criador):
Diretrizes: Uma classe B deve ser responsável pela criação de instâncias de uma classe A se uma ou mais das seguintes condições forem verdadeiras:
B agrega A.
B contém A.
B usa A de forma intensiva.
B possui os dados necessários para inicializar A.
Qual padrão tem a intenção de atribuir a responsabilidade a uma classe que possui a informação necessária para cumprir essa responsabilidade?
Information Expert (Especialista em Informação):
Diretrizes: A responsabilidade deve ser atribuída à classe que possui a maior parte da informação necessária para realizá-la.
Qual padrão tem a intenção de definir a responsabilidade de lidar com eventos do sistema e orquestrar a execução de operações para outras classes?
Controller (Controlador):
Diretrizes: Atribuir a responsabilidade a uma classe que representa um caso de uso ou um cenário do sistema, ou a uma classe que representa uma entidade significativa do domínio que coordena a atividade.
Qual padrão tem a intenção de reduzir as dependências entre classes para aumentar a reusabilidade e a facilidade de manutenção?
Low Coupling (Baixo Acoplamento):
Diretrizes: Atribuir responsabilidades de forma que minimize a dependência de uma classe em relação a outras.
Qual padrão tem a intenção de aumentar a coesão dentro de uma classe para torná-la mais compreensível e fácil de manter?
High Cohesion (Alta Coesão):
Diretrizes: Atribuir responsabilidades de forma que as operações de uma classe sejam relacionadas e focadas em uma tarefa específica.
Qual padrão é usado para permitir que diferentes classes tratem de forma uniforme diferentes comportamentos?
Polimorfismo - Grasp
Atribuir responsabilidades para variação comportamental entre classes a uma interface comum ou classe abstrata que as classes concretas irão implementar.
Qual padrão tem a intenção de criar uma classe artificial que não pertence ao domínio do problema para manter baixo acoplamento e alta coesão?
Pure Fabrication (Fabricação Pura):
Diretrizes: Introduzir uma classe que não é derivada do modelo conceitual para suportar as responsabilidades de design, como manipulação de persistência, formatação, etc.
Qual padrão tem a intenção de interpor um intermediário entre duas classes para desacoplar e permitir uma maior flexibilidade?
Indirection (Indireção):
Diretrizes: Usar uma classe intermediária para mediar a comunicação entre componentes ou serviços para reduzir o acoplamento.
Qual padrão tem a intenção de proteger elementos de design de variações ou instabilidades em outros elementos?
Protected Variations (Variações Protegidas):
Diretrizes: Usar interfaces, encapsulamento e outras técnicas para criar uma barreira contra variações, de forma que mudanças em uma parte do sistema não afetem outras partes.
Conjunto de diretrizes para atribuição de responsabilidades em design de software orientado a objetos?
GRASP (General Responsibility Assignment Software Patterns)
Quais são os tipos de acoplamento do mais alto para o mais baixo?
Conteúdo
Global
Controle
Estrutura
Dados
Quais são os tipos de coesão da mais alta para mais baixa?
Funcional
Sequencial
Comunicação
Procedural
Temporal
Lógica
Coincidente