Eae pessoal, hoje iremos falar um pouco sobre GRASP, mas para inicio de conversa, o que é o GRASP? É um conjunto de princípios fundamentais para modelagem de objetos e atribuição de responsabilidade escrito na forma de padrões.

Um padrão do GRASP é um par de um problema e uma solução

Primeiro Padrão - Information Expert: Consiste em atribuir a responsabilidade ao objeto que tem a informação necessárias para realiza-la. Com isso o encapsulamento é mantido e o comportamento é mais bem distribuído entre as classes, mas há situações onde a solução sugerida leva a problema de acoplamento e coesão.

Segundo Padrão - Creator: Com o Creator é decidido quem deve ser o responsavel por criar uma nova instancia de uma classe da seguinte maneira, A Classe X deve criar uma Classe Y se:
X agrega objetos da classe Y
X contém objetos de Y,
X armazena  instancias de Y
X, de forma privada, usa instancia de Y
X tem dados necessários para inicializar Y
Com o Creator é possível manter estável o grau de acoplamento entre as classes, mas quando a criação de uma instancia for muito complexa, envolvendo dependências tecnológicas ou subsistemas externos, é preferível delegar essa responsabilidade a um Factory

Terceiro Padrão - Baixo Acoplamento: Reduz o impacto das mudanças atribuindo a responsabilidade de forma a manter o acoplamento baixo, isso potencializa o reuso, facilita o entendimento e minimiza os efeitos de mudanças, mas  o principio utilizado ao extremo leva a um  design pobre.

Quarto Padrão - Alta Coesão: Visa manter os objetos focados, fáceis de entender, gerenciar e ainda pouco acoplados e isso é feito atribuindo a responsabilidade de forma a manter a coesão funcional alta, com isso, aumenta a clareza do projeto, aumenta potencial de reuso e geralmente promove menor acoplamento.

Quinto Padrão - Controlador: Os eventos de sistemas devem ser atribuídos a uma classe que represente todo o sistema ou um subsistema, é a classe raiz do sistema/modulo. Trás benefícios como aumento de potencial de reuso, permite a criação de interfaces plugáveis e define claramente pontos de entrada no sistema, mas na hora de utilizar esse padrão a falta de analise de coesão, pode levar a criação de  controladores inchados, cheios de métodos pouco relacionados entre si.

É necessário as vezes usar mais de um padrão em um mesmo "pedaço" de projeto pois é necessário escolher entre os usados o que apresentar um resultado melhor. É bom lembrar também que o padrão GRASP não é algo fixo que sempre deve ser utilizado em qualquer caso, ele é só mais um conjunto de padrões no mercado dentre tantos outros que podem ser utilizados em um projeto, como o SOLID e GoF. Caso tenham interesse em mais informações sobre o GRASP, só clicar AQUI para ter acesso a um conjunto de video-aulas sobre o tema abordado

No comments

Tecnologia do Blogger.