-
Notifications
You must be signed in to change notification settings - Fork 1
Adapter GoF
| Data | Versão | Modificações | Autor |
|---|---|---|---|
| 31/05/2017 | 0.5 | Estrutura inicial do Documento | Lucas Andrade |
| 01/05/2017 | 1.0 | Adicionando Modelagem e detalhes da mesma | Lucas Andrade, Júlio Xavier e Jhonatan Alves |
| 22/06/2017 | 1.1 | atualizando modelagem | Gesiel Freitas |
| 22/06/2017 | 1.2 | Adicionando detalhes de implementação | Nicácio Arruda |
Adapter (as vezes chamado de Wrapper) é um padrão GoF estrutural que tem como finalidade converter uma interface de um classe para que essa se comunique com a interface de outra classe inconpatível. Assim quando temos uma classe cuja a interface possui respostas ou conteúdos que não combinam com o esperado pelo cliente (ou por outra classe intermediária).
A motivação para utilizar esse padrão no projeto InoxConverter se deve ao fato da necessidade de consumir dados de uma API de cotação de moedas. Os dados fornecidos pela API não possuem um formato esperado pela a linguagem Ruby, ou seja, não são compatíveis com a gem.
O problema a ser solucionado é que o Adapter vai tratar os dados fornecidos pela API (em formato XML) para que eles possam ser utilizados nas funções de conversão escritas em código Ruby (versão da linguagem 2.3.1). Com isso o Adapter se mostra bastante eficiente para resolver a incompatibilidade dos dados manipulados entre as classes da aplicação.
Figura 01 - Modelagem do Adapter
A classe API será o nosso Adaptee, pois é a classe responsável por consume a api de cotação de moedas em formato XML e que precisa ser adaptado.
A classe CurrencyAdapter será a classe que vai fazer a adapção dos dados de XML (classe API, adapter) para Ruby (classe Currency, target).
A classe Currency será nosso Alvo (target), ou seja, a classe que o cliente (usuário da gem), vai utilizar.
Trecho de código da classe API -- Adaptee

Classe CurrencyAdapter

Classe Currency

