Padrões de Projetos - Adapter e Facade
-
Upload
leonardo-garcia -
Category
Documents
-
view
221 -
download
0
description
Transcript of Padrões de Projetos - Adapter e Facade
![Page 1: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/1.jpg)
Padrões de ProjetosAdapter e Facade
Daoda Traore
Leonardo Garcia
Wagner Lindemberg
![Page 2: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/2.jpg)
Agenda
• Introdução à Padrões de Projetos
• Padrão Adapter
• Padrão Facade
• Conclusões
![Page 3: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/3.jpg)
O que são Padrões de Projetos?
![Page 4: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/4.jpg)
Padrões de Projetos (Design Pattern)
• Padrões de projetos são soluções para problemas que alguém um dia teve e resolveu aplicando um modelo que foi documentado e que você pode adaptar integralmente ou de acordo com necessidade de sua solução.
• “Cada padrão define um problema no nosso ambiente e o cerne da sua solução, de tal forma que você possa usar essa solução mais de um milhão de vezes, sem nunca fazê-lo da mesma maneira.” (Christopher Alexander)
• Padrão de projeto é uma solução para um problema em um determinado contexto.
![Page 5: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/5.jpg)
Padrão de Projeto - Adapter
• Descrição
• Diagrama UML
• Participantes
• Aplicabilidade
• Vantagens e desvantagens
• Exemplo
![Page 6: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/6.jpg)
Descrição
• “Converter a interface de uma classe em outra interface, esperada pelo cliente. O Adapter permite que interfaces incompatíveis trabalhem em conjunto – o que, de outra forma, seria impossível.” [1]
• Ou seja, dado um conjunto de classes com mesma responsabilidade, mas interfaces diferentes, utilizamos o Adapter para unificar o acesso a qualquer uma delas.
![Page 7: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/7.jpg)
Diagrama UML
![Page 8: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/8.jpg)
Participantes
• Cliente - Colabora entre os objetos conforme a interface Alvo.
• Alvo - Define a interface de domínio específico que o Cliente utiliza.
• Adaptador - Adapta a Classe Existente para ser utilizada pela classe Alvo.
• Classe Existente - Define uma interface pré-existente que necessita ser adaptada.
![Page 9: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/9.jpg)
Aplicabilidade
• Deseja-se utilizar uma classe já existente porém sua interface não é compatível com a interface utilizada na aplicação.
• Deseja-se criar uma classe reutilizável que coopere com classes não relacionadas ou imprevistas, ou seja, classes com interfaces não necessariamente compatíveis.
• Precisa-se utilizar várias sub-classes já existentes mas é impraticável criar uma sub-classe para cada uma.
![Page 10: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/10.jpg)
Aplicabilidade – cont.
• Analogia
• Ao comprar um notebook nos EUA, ele tem uma interface de tomadas americanas.
• Precisamos adaptar para a interface de tomadas brasileiras.
![Page 11: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/11.jpg)
Vantagens e desvantagens
• Vantagens:
• Permite o uso de um único adaptador para uma hierarquia de classes adaptadas.
• Permite que o adaptador sobrescreva algumas funções do adaptado.
• Desvantagens:
• Não funciona bem quando se quer adaptar uma hierarquia de classes.
• É mais difícil sobrescrever funções do adaptado.
![Page 12: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/12.jpg)
Exemplo – Vamos Javar?
![Page 13: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/13.jpg)
Padrão de Projeto - Facade
• Descrição
• Diagrama UML
• Aplicabilidade
• Vantagens e desvantagens
• Exemplo
![Page 14: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/14.jpg)
Descrição
• “Fornecer uma interface unificada para um conjunto de interfaces em um subsistema. Facade define uma interface de nível mais alto que torna o subsistema mais fácil de ser usado.” [1]
• Nesse sentido o Facade vai definir operações a serem realizadas com estes subsistemas. .
![Page 15: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/15.jpg)
Diagrama UML
![Page 16: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/16.jpg)
Aplicabilidade
• Quando querermos simplificar uma sequência de operações complexas.
• Quando queremos simplificar a interface com o usuário.
• Quando queremos fornecer uma interface única e uniforme para as diversas funcionalidades de um subsistema.
• Quando queremos criar sistemas em camadas. Um Facade provê o ponto de entrada para cada camada (nível) do subsistema.
![Page 17: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/17.jpg)
Aplicabilidade – cont.
• Analogia com a torre de controle e aviões nos aeroportos
• Os aviões interagem com as torres de controle e não com eles mesmos.
• As torres de controle sabem exatamente onde cada avião está, qual sua rota até o destino, momento de decolagem e aterrisagem.
![Page 18: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/18.jpg)
Vantagens e desvantagens
• Vantagens:
• Isola os clientes dos subsistemas, tornando o sistema mais fácil de usar.
• Promove o acoplamento fraco entre o subsistema e seus clientes.
• Impede as aplicações de usar diretamente as classes dos subsistemas.
• Desvantagens:
• Não evita que aplicações possam acessar diretamente as subclasses do sistema, se assim o desejarem.
![Page 19: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/19.jpg)
Exemplo – Vamos Javar?
![Page 20: Padrões de Projetos - Adapter e Facade](https://reader033.fdocumentos.tips/reader033/viewer/2022052603/563db80b550346aa9a900542/html5/thumbnails/20.jpg)
Referências
• [1] GAMMA, Erich et al. Padrões de Projeto: Soluções reutilizáveis de software orientado a objetos.
• [2] BRIZENO, Marcos. <https://brizeno.wordpress.com/category/padroes-de-projeto/>, visitado em: 10/10/2015.
• [3] ALPHONSUS, Fabrízzio. <http://www.portal.inf.ufg.br/~fabrizzio/web/java/aula8.pdf>, visitado em: 10/10/2015