Você está na página 1de 3

7SIN-1

TÓPICOS ESPECIAIS EM PROGRAMAÇÃO


FERNANDO VIEIRA – ftvieira@seama.edu.br

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

A Figura 1 mostra um diagrama de 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

A Figura 2 mostra um diagrama de adaptador de objeto.

4 Aplicabilidade

Adapter é usado quando:

• 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.

Use o Padrão Adapter quando:

• 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

Você também pode gostar