"Olá, amigo! Hoje eu vou te dizer o que exatamente é um « adaptador ». Espero que depois de aprender sobre este tópico você tenha um entendimento muito melhor sobre fluxos de entrada/saída."
Imagine que seu programa usa dois frameworks escritos por outros programadores/empresas. Ambos os frameworks são muito bons e usam princípios OOP: abstração, polimorfismo, encapsulamento. Juntos, eles cobrem quase completamente o que seu programa precisa fazer. Você fica com uma tarefa simples. Você precisa passar objetos criados por um framework para o outro framework. Mas ambos os frameworks são completamente diferentes e "não se conhecem", ou seja, não possuem nenhuma classe em comum. Você precisa de alguma forma converter os objetos de um framework em objetos do outro.
Essa tarefa pode ser lindamente resolvida aplicando a técnica do « adaptador » (padrão de design):
código Java | Descrição |
---|---|
|
Isso reflete o padrão de design do adaptador.
A ideia básica é que a classe MyClass converte (adapta) uma interface na outra. |
"Você pode me dar um exemplo mais específico?"
"OK. Digamos que cada estrutura tenha sua própria interface de "lista" exclusiva. Eles podem se parecer com isto:"
código Java | Descrição |
---|---|
|
Código da primeira estrutura ( Alpha )
AlphaList é uma das interfaces que permite que o código do framework interaja com o código que usa o framework. |
|
AlphaList Manager AlphaListManager é uma classe na estrutura. Seu método createList cria umobjeto AlphaList |
|
Código da segunda estrutura ( Beta ).
BetaList é uma das interfaces que permite que o código do framework interaja com o código que usa o framework. BetaSaveManager é uma classe na estrutura. Seu método saveList salva umobjeto BetaList |
|
Classe «Adapter» que converte da interface AlphaList para a interface BetaList
A classe ListAdapter implementa a interface BetaList da segunda estrutura. Quando alguém chama esses métodos, o código da classe «encaminha» as chamadas para a variável de lista , que é uma AlphaList do primeiro framework. Um objeto AlphaList é passado para o construtor ListAdapter O método setSize opera de acordo com as seguintes regras: se for necessário aumentar o tamanho da lista, adicione itens vazios (nulos). Se o tamanho da lista precisar ser reduzido, exclua os itens no final. |
|
Um exemplo de como pode ser usado |
"Gostei mais do seu último exemplo. Muito conciso e compreensível."
GO TO FULL VERSION