terça-feira, 27 de março de 2012

Adapter



"Objetivo: converter a interface de uma classe em outra interface esperada pelos clientes. Adapter permite a comunicação entre classes que não  poderiam trabalhar juntas devido à incompatibilidade de suas interfaces." [GoF]



Duas formas de Adapter
Forma 1
• Class Adapter: usa herança múltipla


• Cliente: aplicação que colabora com objetos aderentes à interface Alvo
• Alvo: define a interface requerida pelo Cliente
• ClasseExistente: interface que requer adaptação
• Adaptador (Adapter): adapta a interface do Recurso à interface Alvo

Forma 2
Object Adapter: usa composição
                                
• Única solução se Alvo não for uma interface Java
• Adaptador possui referência para objeto que terá sua interface
adaptada (instância de ClasseExistente).
• Cada método de Alvo chama o(s) método(s) correspondente(s)
na interface adaptada

Quando usar?

• Sempre que for necessário adaptar uma
interface para um cliente
• Class Adapter
• Quando houver uma interface que permita a
implementação estática
• Object Adapter
• Quando menor acoplamento for desejado
• Quando o cliente não usa uma interface Java ou
classe abstrata que possa ser estendida

Fonte:
Padrões Design de Projeto com aplicações em Java (argonavis)
[1][Metsker] Steven John Metsker, Design Patterns Java Workbook.
Addison-Wesley, 2002,
[2][GoF] Erich Gamma et al. Design Patterns: Elements of
Reusable Object-oriented Software. Addison-Wesley, 1994
[3] James W. Cooper. The Design Patterns Java Companion.
http://www.patterndepot.com/put/8/JavaPatterns.htm
[4][Larman] Craig Larman, Applying UML and Patterns, 2nd.
Edition, Prentice-Hall, 2002
[5][EJ] Joshua Bloch, Effective Java Programming Guide, AddisonWesley, 2001
[6][JMM FAQ] Jeremy Manson and Brian Goetz, JSR 133 (Java
Memory Model) FAQ, Feb 200

Postado por: Hélio Marcus, ADS - 6º Período

Nenhum comentário:

Postar um comentário