Escolar Documentos
Profissional Documentos
Cultura Documentos
Padrões de Projetos
Padrão Adapter
1 Objetivo
O principal objetivo do Adapter é facilitar a conversão da interface de uma classe para outra
interface mais interessante para o cliente, fazendo com que várias classes possam trabalhar em
conjunto independentemente das interfaces originais. Às vezes é preciso modificar uma classe que
não pode ser alterada adequadamente devido à falta do código fonte (alguma biblioteca de classes
comercial), ou por alguma outra razão. O Adapter é uma das formas de modificar classes nestas
circunstâncias, sendo classificado com a de finalidade estrutural e abrange tanto escopo de classe
quanto de objeto.
2 Contexto
A função do padrão Adapter é fazer com que a interface de uma classe possa ser "adaptada" à
interface de uma outra para que essas possam trabalhar juntas. É a melhor forma de se ligar
classes que tenham interfaces incompatíveis. Podemos também usar o Adapter caso seja
necessário modificar a interface de uma classe em função de um novo requisito, mas a
modificação do código das classes já existentes não é possível por não se possuir os fontes
3 Estrutura
Adaptador de classes
Adaptador de objetos
1
7SIN-1
TÓPICOS ESPECIAIS EM PROGRAMAÇÃO
FERNANDO VIEIRA – ftvieira@seama.edu.br
Padrões de Projetos
4 Aplicabilidade
• Uma classe já existente e sua interface não combinam com a esperada pelo cliente;
• Se quer criar uma classe reutilizável que coopera com classes não relacionadas ou não
previstas, isto é, classes que não necessariamente tenham interfaces compatíveis;
• Se necessita usar várias subclasses existentes, mas é impraticável adaptar suas interfaces
fazendo um Subclassing de cada uma.
• Desejar usar uma classe existente e sua interface não corresponde ao que você precisa;
• Desejar criar uma classe reutilizável que coopera com classes imprevistas ou não
relacionáveis, isto é, classes que não tem necessariamente interfaces compatíveis.
5 Conseqüências
Vantagens
Adapta o Adaptador para o Alvo através de uma classe concreta. Como consequência, uma
classe adaptada não funcionará para adaptar uma classe e suas subclasses.
Deixa o Adaptador sobrepor algum comportamento do adaptado, desde que o Adaptador seja
uma subclasse do adaptado.
Introduz um único objeto e nenhum ponteiro adicional é necessário para chegar ao adaptado
Desvantagens: -
2
7SIN-1
TÓPICOS ESPECIAIS EM PROGRAMAÇÃO
FERNANDO VIEIRA – ftvieira@seama.edu.br
Padrões de Projetos
Usou-se como exemplo (adaptado [Software Design Patterns, 2005]), ilustrado na Figura 2, uma
implementação que demonstra o uso de um banco de dados químico legado. Objetos da classe
CompostoQuimico acessam o banco de dados através de uma interface que utiliza o Padrão
Adapter.
CompostoQuímico : Define a interface de domínio específico que o cliente utiliza, ou seja, esta
classe contém somente o que a classe Tela conhece.
Composto : Adapta a interface CompostoQuimico para ser utilizada pela classe BDQuimico, para
posteriormente os dados sejam mostrados na tela.
BDQuimico : Define uma interface pré-existente que necessita ser adaptada, neste exemplo ela
armazena os dados de cada composto químico, que são acessados e adaptados para a tela
cliente.
6 Exemplo
7 Código do Exemplo