View
221
Download
0
Category
Preview:
DESCRIPTION
Padrões de Projetos - Adapter e Facade
Citation preview
Padrões de ProjetosAdapter e Facade
Daoda Traore
Leonardo Garcia
Wagner Lindemberg
Agenda
• Introdução à Padrões de Projetos
• Padrão Adapter
• Padrão Facade
• Conclusões
O que são Padrões de Projetos?
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.
Padrão de Projeto - Adapter
• Descrição
• Diagrama UML
• Participantes
• Aplicabilidade
• Vantagens e desvantagens
• Exemplo
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.
Diagrama UML
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.
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.
Aplicabilidade – cont.
• Analogia
• Ao comprar um notebook nos EUA, ele tem uma interface de tomadas americanas.
• Precisamos adaptar para a interface de tomadas brasileiras.
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.
Exemplo – Vamos Javar?
Padrão de Projeto - Facade
• Descrição
• Diagrama UML
• Aplicabilidade
• Vantagens e desvantagens
• Exemplo
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. .
Diagrama UML
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.
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.
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.
Exemplo – Vamos Javar?
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
Recommended