Please enable JavaScript.
Coggle requires JavaScript to display documents.
Padrão GRASP Anna Júlia Lira - Coggle Diagram
Padrão GRASP
Anna Júlia Lira
GRASP é uma sigla para General Responsibility Assignment Software Patterns
consiste em diretrizes para atribuir responsabilidade a classes e objetos em projeto orientado a objetos
responde a problemas comuns em projetos de desenvolvimento de software
São 9 padrões:
Criador (Creator);
Especialista na Informação (Information Expert);
Baixo Acoplamento (Low Coupling);
Alta Coesão (High Cohesion);
Controlador (Controller);
Polimorfismo (Polymorphism);
Fabricação/Invenção Pura (Pure Fabrication);
Indireção (Indirection);
Variações Protegidas (Protected Variations)
1. Criador
indica que a responsabilidade de criar uma instância de uma classe deve ser atribuída a outra classe
Reduz o acoplamento, facilita a reutilização e melhora a manutenção, concentrando a criação de objetos em classes especializadas
2. Especialista na Informação
recomenda atribuir a responsabilidade a uma classe que possua as informações necessárias para cumprir essa responsabilidade. Significa escolher a classe que tem o conhecimento relevante para tomar decisões relacionadas a uma tarefa específica
Promove o encapsulamento, facilita a manutenção e melhora a coesão, mantendo informações em classes apropriadas
3. Baixo Acoplamento
visa minimizar a dependência entre classes e módulos, mantendo o acoplamento entre eles o mais baixo possível. Determina que as classes não devem depender de objetos concretos e sim de abstrações, para permitir que haja mudanças sem impacto
Facilita a manutenção, promove a reutilização e torna o sistema mais flexível, minimizando dependências entre classes
4. Alta coesão
visa agrupar responsabilidades relacionadas em uma única classe, garantindo que cada classe tenha um foco claro e bem definido. é um padrão avaliativo que tenta manter os objetos adequadamente focados, gerenciáveis e compreensíveis
Facilita a compreensão, melhora a manutenção e promove a reutilização, agrupando responsabilidades relacionadas em uma classe
5. Controlador
sugere atribuir a responsabilidade de controlar o fluxo de operações e coordenar atividades entre objetos. Um objeto controlador é um objeto de interface não-usuário, responsável por receber ou manipular um evento do sistema
Organiza o sistema, permite a reutilização e facilita a manutenção, ao centralizar responsabilidades de coordenação
6. Polimorfismo
envolve a atribuição da responsabilidade de tratar diferentes tipos de objetos a uma classe comum, permitindo que várias classes compartilhem a mesma interface e substituam o comportamento de acordo com suas necessidades. As responsabilidades devem ser atribuídas a abstrações e não a objetos concretos, permitindo que elas possam variar conforme a necessidade
Permite compartilhar interfaces comuns, aumenta a flexibilidade e facilita a implementação de padrões
7. Fabricação Pura
sugere a introdução de uma classe fictícia ou de apoio quando nenhuma classe existente seja naturalmente adequada para assumir uma responsabilidade específica. É uma classe que não representa nenhum conceito no domínio do problema, ela apenas funciona como uma classe prestadora de serviços
Ajuda a manter o baixo acoplamento, facilita a manutenção e melhora a legibilidade, ao introduzir classes de apoio
8. Indireção
recomenda atribuir a responsabilidade de mediar entre outros componentes ou serviços para evitar o acoplamento direto. Ajuda a manter o baixo isolamento, por meio de delegação de responsabilidades por meio de uma classe mediadora
Reduz o acoplamento, facilita a manutenção e melhora a extensibilidade, ao mediar chamadas entre componentes
9. Variações Protegidas
propõe proteger as partes sensíveis do sistema das variações em componentes externos. Isso é alcançado por meio do uso de interfaces e abstrações para isolar o sistema interno das mudanças externas
Isola o sistema interno de mudanças externas, facilita a adaptação e mantém o sistema flexível
Assim como os padrões SOLID , o GRASP foi criado com a intenção de tornar o código mais flexível, facilitando a manutenção e a extensibilidade
O GRASP também ajuda a tornar o sistema mais compreensível, pois as responsabilidades são atribuídas de maneira lógica e intuitiva, beneficiando não apenas os designers, mas também outros desenvolvedores que precisam trabalhar no código
se baseia em princípios de design orientado a objetos, como encapsulamento, baixo acoplamento, alta coesão, abstração e polimorfismo