Você está na página 1de 20

Padres de Projetos

Adapter e Facade
Daoda Traore
Leonardo Garcia
Wagner Lindemberg

Agenda

Introduo Padres de Projetos


Padro Adapter
Padro Facade
Concluses

O que so Padres de Projetos?

Padres de Projetos (Design


Pattern)
Padres

de projetos so solues para problemas que algum um dia teve e


resolveu aplicando um modelo que foi documentado e que voc pode adaptar
integralmente ou de acordo com necessidade de sua soluo.

Cada padro define um problema no nosso ambiente e o cerne da sua soluo,


de tal forma que voc possa usar essa soluo mais de um milho de vezes, sem
nunca faz-lo da mesma maneira. (Christopher Alexander)

Padro

de projeto uma soluo para um problema em um determinado


contexto.

Padro de Projeto - Adapter


Descrio
Diagrama UML
Participantes
Aplicabilidade
Vantagens e desvantagens
Exemplo

Descrio
Converter

a interface de uma classe em outra interface,


esperada pelo cliente. O Adapter permite que interfaces
incompatveis trabalhem em conjunto o que, de outra
forma, seria impossvel. [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 domnio especfico 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 porm sua interface

no compatvel com a interface utilizada na aplicao.


Deseja-se criar uma classe reutilizvel que coopere com
classes no relacionadas ou imprevistas, ou seja, classes com
interfaces no necessariamente compatveis.
Precisa-se utilizar vrias sub-classes j existentes mas
impraticvel 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 funes do adaptado.

No funciona bem quando se quer adaptar uma hierarquia de classes.

Desvantagens:
mais difcil sobrescrever funes do adaptado.

Exemplo Vamos Javar?

Padro de Projeto - Facade


Descrio
Diagrama UML
Aplicabilidade
Vantagens e desvantagens
Exemplo

Descrio
Fornecer

uma interface unificada para um conjunto de


interfaces em um subsistema. Facade define uma interface
de nvel mais alto que torna o subsistema mais fcil de ser
usado. [1]
Nesse sentido o Facade vai definir operaes a serem
realizadas com estes subsistemas. .

Diagrama UML

Aplicabilidade
Quando

querermos simplificar uma sequncia de operaes


complexas.
Quando queremos simplificar a interface com o usurio.
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 (nvel) do
subsistema.

Aplicabilidade cont.
Analogia com a torre de controle e avies nos aeroportos

Os avies interagem com as torres de controle e no com eles


mesmos.
As torres de controle sabem exatamente onde cada avio 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 fcil de


usar.

Promove o acoplamento fraco entre o subsistema e seus clientes.


Impede as aplicaes de usar diretamente as classes dos subsistemas.

Desvantagens:

No evita que aplicaes possam acessar diretamente as subclasses


do sistema, se assim o desejarem.

Exemplo Vamos Javar?

Referncias
[1] GAMMA, Erich et al. Padres de Projeto: Solues

reutilizveis de software orientado a objetos.


[2] BRIZENO, Marcos. <https
://brizeno.wordpress.com/category/padroes-de-projeto/>,
visitado em: 10/10/2015.
[3] ALPHONSUS, Fabrzzio. <http://www.portal.inf.ufg.br/~
fabrizzio/web/java/aula8.pdf>, visitado em: 10/10/2015

Você também pode gostar