Buscar

Padrões GRASP - Aula 10

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

PADRÕES DE PROJETO DE SOFTWARE
Aula 10 – Padrões GRASP 
PADRÕES GRASP – AULA 10
PADRÕES DE PROJETO DE SOFTWARE
O que veremos nesta décima aula
Finalizar o estudo da família de padrões GRASP;
Conhecer os padrões GRASP: 
Invenção Pura, 
Indireção
Variações Protegidas;
Aprender as principais aplicações e funcionalidades destes padrões;
PADRÕES GRASP – AULA 10
PADRÕES DE PROJETO DE SOFTWARE
Pure Fabrication (Invenção Pura)
Problema:
Que objeto deve ter a responsabilidade, quando não se quer violar a Alta Coesão e o Baixo Acoplamento, mas as soluções oferecidas por Expert não são adequadas?
Atribuir responsabilidades apenas para classes do domínio conceitual pode levar à situações de maior acoplamento e menos coesão.
Solução:
Atribuir um conjunto altamente coesivo de responsabilidades a uma classe artificial que não representa um conceito do domínio do problema.
PADRÕES GRASP – AULA 10
PADRÕES DE PROJETO DE SOFTWARE
Exemplo
Apesar de Sale ser a candidata lógica para ser a Expert, para salvar a si mesma em um banco de dados, isto levaria o projeto a ter baixo acoplamento, alta coesão e baixo reuso;
Uma solução seria criar uma classe responsável somente por isto:
PADRÕES GRASP – AULA 10
PADRÕES DE PROJETO DE SOFTWARE
Exemplo
Se o Jogador lançar os dados , este comportamento não será muito reutilizável
Copo é uma Invenção Pura responsável por lançar os dados
PADRÕES GRASP – AULA 10
PADRÕES DE PROJETO DE SOFTWARE
Indireção
Problema:
A quem devemos atribuir a responsabilidade, evitando o acoplamento direto entre dois ou mais objetos?
Como desacoplar objetos apoiando o Acoplamento Baixo e maximizando o potencial de reuso?
Solução:
Atribua a responsabilidade a um objeto intermediário para mediar as mensagens entre outros componentes ou serviços, para que não sejam diretamente acoplados;
O objeto intermediário cria uma camada de indireção entre os dois componentes que não mais dependam um do outro: Ambos dependem da indireção.
PADRÕES GRASP – AULA 10
PADRÕES DE PROJETO DE SOFTWARE
Exemplo
O objeto AdaptadorMestreDosImpostos atua como intermediário para o calculador externo de imposto.
Por meio de Polimorfismo, ele fornece uma interface consistente
com os objetos internos e ocultam as variações nas APIs externas
PADRÕES GRASP – AULA 10
PADRÕES DE PROJETO DE SOFTWARE
Exemplo
O exemplo de Invenção Pura de desacoplar a Venda dos serviços de Banco de Dados através da classe ArmazenamentoPersistente
É também um exemplo de atribuir responsabilidade para apoiar a Indireção.
PADRÕES GRASP – AULA 10
PADRÕES DE PROJETO DE SOFTWARE
Indireção
A maioria dos problemas em Computação podem ser resolvidos por um outro nível de indireção – Dijkstra.
Exemplos de Indireção:
Mediator, 
Façade, 
Bridge
Adapter
PADRÕES GRASP – AULA 10
PADRÕES DE PROJETO DE SOFTWARE
Variações protegidas
Problema:
Como projetar objetos, subsistemas e sistemas para que as variações ou instabilidades nesses elementos não tenham um impacto indesejável nos outros elementos?
Solução:
Identificar pontos de variação ou instabilidade potenciais;
Atribuir responsabilidades para criar uma interface estável em volta desses pontos;
Encapsulamento, interfaces, polimorfismo, indireção e padrões; Máquinas virtuais e brokers são motivados por este princípio;
Evitar enviar mensagens a objetos muito distantes.
PADRÕES GRASP – AULA 10
PADRÕES DE PROJETO DE SOFTWARE
Exemplo
A solução com Polimorfismo para os calculadores de impostos externos é um exemplo de Variações Protegidas
PADRÕES GRASP – AULA 10
PADRÕES DE PROJETO DE SOFTWARE
Variações protegidas
O ponto de instabilidade (variação) são as diferentes interfaces de calculadores externos
Acrescentando um nível de Indireção, uma Interface e usando o Polimorfismo com várias implementações de IAdaptadorDeCalculadorDeImposto
Protegemos o sistema a partir de variações nas APIs externas.
Objetos internos colaboram com uma interface estável
Várias implementações do Adaptador ocultam as variações para os sistemas externos.
PADRÕES GRASP – AULA 10
PADRÕES DE PROJETO DE SOFTWARE
Bibliografia
Utilizando UML e Padrões: uma introdução à análise e ao projeto orientados a objetos - 3ª Edição
Autor: Larman, Craig
Padrões de Projeto: soluções reutilizáveis de software orientado a objetos
Autor: Gamma, Erich ... [et al]
*
*
*
*
*
*
*
*
*
*
*
*
*
*

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando