padrões de projetos - adapter e facade

20
Padrões de Projetos Adapter e Facade Daoda Traore Leonardo Garcia Wagner Lindemberg

Upload: leonardo-garcia

Post on 04-Dec-2015

220 views

Category:

Documents


0 download

DESCRIPTION

Padrões de Projetos - Adapter e Facade

TRANSCRIPT

Page 1: Padrões de Projetos - Adapter e Facade

Padrões de ProjetosAdapter e Facade

Daoda Traore

Leonardo Garcia

Wagner Lindemberg

Page 2: Padrões de Projetos - Adapter e Facade

Agenda

• Introdução à Padrões de Projetos

• Padrão Adapter

• Padrão Facade

• Conclusões

Page 3: Padrões de Projetos - Adapter e Facade

O que são Padrões de Projetos?

Page 4: Padrões de Projetos - Adapter e Facade

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

Padrão de Projeto - Adapter

• Descrição

• Diagrama UML

• Participantes

• Aplicabilidade

• Vantagens e desvantagens

• Exemplo

Page 6: Padrões de Projetos - Adapter e Facade

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

Diagrama UML

Page 8: Padrões de Projetos - Adapter e Facade

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

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

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

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

Exemplo – Vamos Javar?

Page 13: Padrões de Projetos - Adapter e Facade

Padrão de Projeto - Facade

• Descrição

• Diagrama UML

• Aplicabilidade

• Vantagens e desvantagens

• Exemplo

Page 14: Padrões de Projetos - Adapter e Facade

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

Diagrama UML

Page 16: Padrões de Projetos - Adapter e Facade

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

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

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

Exemplo – Vamos Javar?

Page 20: Padrões de Projetos - Adapter e Facade

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