Frameworks, Padrões e Princípios GRASP
Classificado em Computação
Escrito em em português com um tamanho de 2,3 KB.
Framework
Um framework é um conjunto de classes relacionadas que permitem a reutilização em um projeto com classes específicas do software. É mais que uma hierarquia de classes, representando uma aplicação em miniatura, completa, com estruturas dinâmicas e estáticas bem definidas.
Padrão
Cada padrão descreve um problema recorrente em nosso ambiente e o núcleo da solução, permitindo sua reutilização inúmeras vezes, de maneiras diferentes.
GRASP (Padrões de Princípios Gerais para Atribuição de Responsabilidades)
Expert (Especialista)
Atribui a responsabilidade à classe que possui a informação necessária (o especialista).
Creator (Criador)
Atribui à classe B a responsabilidade de criar a instância da classe A se uma das seguintes condições for verdadeira:
- B contém A
- B agrega A
- B tem os dados de inicialização de A
- B registra A
- B usa A intensamente
Controller (Controlador)
Atribui a responsabilidade de tratar eventos do sistema a:
- O sistema em geral (controlador fachada)
- Uma classe artificial que representa o caso de uso (controlador de caso de uso)
- Outras classes apropriadas
Low Coupling (Acoplamento Fraco)
Atribui responsabilidades para minimizar dependências e maximizar a reutilização.
High Cohesion (Coesão Alta)
Atribui responsabilidades para manter a complexidade controlável.
Polymorphism (Polimorfismo)
Quando comportamentos variam conforme a classe, atribui a responsabilidade pelo comportamento, usando operações polimórficas, aos tipos para os quais o comportamento varia.
Pure Fabrication (Invenção Pura)
Atribui responsabilidades coesas a uma classe artificial que não representa o domínio do problema para manter coesão alta, acoplamento fraco e reutilização.
Indirection (Indireção)
Atribui a responsabilidade a um objeto intermediário para mediar a comunicação entre componentes e serviços, evitando o acoplamento direto.
Don't Talk to Strangers (Lei de Demétrio)
Atribui a responsabilidade de colaborar com um objeto indireto a um objeto direto, para que o cliente não precise conhecer o objeto indireto.