padrões de projeto: adapter

Post on 11-Apr-2017

178 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Design Patterns: Adapter Messias R. Batista@mrafaelbatista

Sistema para Internet | Aplicações Corporativas

Agenda

1.Origem do nome2.Objetivo e Intenção do

Padrão3.Cenário para

Implementação4.Estrutura de Classe5.Participantes do Padrão6.Colaboração7.Vantagens e Desvantagens8.Exemplo de código9.Usos conhecidos10.Questões sobre o assunto

Design Patterns: Adapter

2

Origem do nome Adapter

3

Origem do nome Adapter: etimologia

“O verbo adaptar vem do latin adaptare (ajustar uma coisa a outra) composto do prefixo ad (fazer) y do verbo aptare (ajustar, aplicar, [...], equipar), frequentativo do verbo apere (amarrar) [...].”

http://etimologias.dechile.net/?adaptar4

Origem do nome Adapter: no contexto

No contexto o adapter é uma solução que busca adaptação entre padrões diferentes.

5

Origem do nome Adapter: apelido

Wrapper pode ser uma segunda nomeclatura para este padrão. Sendo compreendido como uma classe empacotadora.

6

Objetivo e Intenção do Padrão

7

Objetivo e Intenção do Padrão

8

Objetivo e Intenção do Padrão

“Converter a interface de uma classe em outra interface, esperada pelos clientes. O Adapter permite que classes com interfaces incompatíveis trabalhem em conjunto” (GAMMA, 2000, p. 140)

9

Objetivo e Intenção do Padrão

10

• Você quer usar uma classe existente, mas sua interface não corresponder à interface de que necessita;

• Você quer criar uma classe reutilizável que coopere com classe não relacionadas ou não-previstas, ou seja, classe que não necessariamente tenham interfaces compatíveis;

• (somente para adaptadores de objetos) você precisa usar várias subclasses existentes, porém, for impraticável adaptaressas interfaces criando subclasses para cada uma. Um adaptador de objeto pode adaptar a interface da sua classe-mãe.

Quando utilizar o padrão Adapter?

Cenário para Implementação

11

Cenário para Implementação: problema central

“Algumas vezes, uma classe toolkit, projetada para ser reutilizada não é reutilizável porque sua interface não corresponde à interface específica de um domínio requerida por uma aplicação”. (GAMMA, 2000, p. 141)

12

Cenário para Implementação: exemplo 1

• Uma organização está precisando atualizar seu Sistema de Informação. Um novo sistema é adquirido.

• Neste novo sistema, busca-se utilizar as tecnologias mais recentes.

• Porém, o processo de mudança será realizado de forma modular.

• A medida que um módulo fique pronto, ele deverá ser acoplado ao sistema antigo até que todo o sistema antigo seja substituído.

13

Cenário para Implementação: exemplo 1

Sistema Atual Novo Sistema

Comunicação

14

Cenário para Implementação: exemplo 2

• Considerar um editor de desenho;

• Abstração-chave é o Objeto Gráfico que tem forma editável;

• A interface do Objeto Gráfico é a Shape;

• Nesta complexidade é fácil implementar objetos gráficos como linhas, polígonos;

• Através de subclasses os Objetos Gráficos são implementados, como LineShape, ou PolígonoShape.

15Exemplo encontrado em GAMMA (2000).

Cenário para Implementação: exemplo 2

Mas, como seria a implementação de um Objeto Gráfico de Edição de Texto?

16

Cenário para Implementação: exemplo 2

Solução

17

Estrutura de Classe

18

Estrutura de Classe: tipos de Adapters

19

Adapter de Objeto

Configura-se na utilização de uma composição de objetos para envelopar uma interface alterada.

Adapter de Classe

Utiliza-se de herança múltipla para gerar o adaptador a partir da gênese desta subclasse.

SIERRA, K.; BATES, B., Use a Cabeça! Java, Rio de Janeiro, AltaBooks. 2005.

Estrutura de Classe: diagrama adapter de classe

20

Estrutura de Classe: diagrama adapter de objeto

21

Participantes do Padrão

22

Participantes do Padrão

23

Participante Referência FunçãoTarget Shape Define a interface específica do domínio

que o Client usa.Client DrawingEditor Colabora com objetos compatíveis com a

interface de Target.Adaptee TextView Define uma interface existente que

necessita ser adaptada.Adapter TextShape Adapta a interface do Adaptee à interface

de Target.

Fonte: Elaborado pelo autor a partir de GAMMA (2000).

Colaboração

24

Colaboração

25

O cliente visualiza apenas a interface Target.

O Adapter se comunica com o Adaptee.

O Adapter implementa a interface Target.

As solicitações são delegadas ao Adaptado.

Vantagens e Desvantagens

26

Vantagens

• Implementação de boas práticas de OO como composição ou herança;

• Vinculação a uma interface e não a uma implementação;

• Flexibilidade na utilização de vários tipos de adaptadores.

27

DesvantagensPontos de Atenção

• Volume de trabalho de adaptadores;

• Adaptadores conectáveis. Fornecer interfaces genéricas;

• Utilização de adaptadores de dois sentidos.

28

Exemplo de Código

29

Exemplo de Código: Diagrama

30

Exemplo de Código: Classe TomadaDeDoisPinos

31http://www.devmedia.com.br/padrao-de-projeto-adapter-em-java/26467

Exemplo de Código: Classe TomadaDeTresPinos

32http://www.devmedia.com.br/padrao-de-projeto-adapter-em-java/26467

Exemplo de Código: Classe AdapterTomada

33http://www.devmedia.com.br/padrao-de-projeto-adapter-em-java/26467

Exemplo de Código: Classe Teste

34http://www.devmedia.com.br/padrao-de-projeto-adapter-em-java/26467

Usos Conhecidos

35

Usos Conhecidos: ListView no Android

36

Usos Conhecidos: ListView no Android

37

Questões Sobre o Assunto

38

Questão 1 – São classes implementadas no Padrão de Projeto Adapter

a) Adapter, Adaptee, Target e Shape

b) Adapter, Target, Client, Shape

c) Adapter, Target, Adaptee, Client

d) Target, Client, Class, Adapter

e) Objetos, Cliente, Target, Adapter

39

Questão 2 - Adapter é um padrão estrutural utilizado para compatibilizar interfaces de modo que elas possam interagir.

a) Certo

b) Errado

Prova Analista de Desenvolvimento | SERPRO | CESPE | 2008

40

Referências

GAMMA, Erich et al. Padrões de Projeto: soluções reutilizáveis de software orientado a objetos. Porto Alegre: Bookman, 2000.

GLAUBER, Nelson. Dominando o Android: do básico ao avançado. Novatec, São Paulo, 2015.

GUERRA, Eduardo. Design Patterns com Java: projeto orientado a objetos guiado por padrões. Casa do Código, São Paulo.

MEDEIROS, Igor. Padrão de Projeto Adapter em Java. http://www.devmedia.com.br/padrao-de-projeto-adapter-em-java/26467 Acessado em: 24 de maio de 2016.

SIERRA, K.; BATES, B., Use a Cabeça! Java, Rio de Janeiro, AltaBooks. 2005.

41http://www.devmedia.com.br/padrao-de-projeto-adapter-em-java/26467

Design Patterns: Adapter Messias R. Batista

Sistema para Internet | Aplicações Corporativas

mrafaelbatista@gmail.comwww.mrafaelbatista.com.br@mrafaelbatista

top related