Padrões GRASP

O que padrão de projeto?

Um conceito de como implementar ou resolver problemas específicos seguindo boas práticas e adequando para solução final do programa que está desenvolvendo, mas não se trata de um algoritmo e sim uma descrição de alto nível assim tendo um código mas compreensivo para os demais quando seguem os mesmo conceitos.

GRASP (General Responsibility Assignment Software Patterns) e um conjunto de padrões que fornecem uma abordagem sistemática para a atribuição de responsabilidades às classes do projeto,  publicado pela primeira vez por Craig Larman em seu livro de 1997 applying UML and Patterns, padrões e princípios usados ​​no GRASP são :

  • Creator (criador)

Este determina como os objetos são criados, compostos e representados, aumentando a flexibilidade do sistema em termos de o quê, quem, como e quando da criação de um objeto.

  • Information Expert (especialista)

O padrão responsável por atribuir responsabilidade, de fazer ou ter informação, a uma classe “especialista” assim diminuindo o acoplamento.

  • Controller (controlador)

O responsável por controlar eventos do sistema, coordenando as tarefas e delegando a sua execução para os outros objetos.

  • Polymorphism (polimorfismo)

Pilar da orientação objeto, este padrão tem a responsabilidade de definir a variação de comportamentos com base no tipo classe que objeto é atribuído, substituído funcionalidade em cada caso.

  • Pure Fabrication (pura invenção)

Como o próprio nome sugere é uma invenção de classe ou objeto artificial ou seja não existe na vida real ou ao Modelo de Domínio e sim algum serviço da aplicação em nível de arquitetura

  • Indirection (indireção)

Atribui objetos intermediários entre elementos para suportar o suporta baixo acoplamento, fazendo indireções para o serviços e possibilitando a reutilização e substituição de código

  • Low Coupling (Baixo Acoplamento)

Baixo acoplamento trás a facilidade para efetuar alterações nas partes internas dos módulos, sem se preocupar com o impacto em outros módulos do sistema, ou seja, torna mais eficiente e mais fácil projetar, escrever e testar um código, pois estes módulos não dependem uns dos outros. O que não acontece no alto acoplamento pois, são muito dependentes uns dos outros, tanto que qualquer alteração no módulo A, pode interromper a funcionalidade no módulo B e vice-versa.

  • High Cohesion (Alta Coesão)

Os códigos que geralmente tem uma manutenção facilitada, são de alta coesão, nestes termos coesão refere-se como os elementos de um módulo são pertencentes um ao outro, sendo assim ao utilizar a alta coesão dentro de um código podemos reduzir a duplicação de conhecimento dentro dos módulos, e facilitando projetar, escrever e testar o código.

  • Protected Variations (variações protegidas)

Este padrão protege todos os elementos de variações causadas em outros elementos como (objetos, sistemas, subsistemas), com foco de reduzir instabilidade em uma interface, utilizando encapsulamento, interfaces, polimorfismos, indireção e padrões.

Referências Bibliográficas