Utilizando o padrão Adapter com Ext JS e Sencha Touch

Então pessoal, tudo certo!?

Quem já utilizou as APIs do ExtJS e Sencha Touch percebeu algumas diferenças entre as APIs. Diferenças simples, mas que podem trazer complicações se não tratadas de forma correta. Neste post irei escrever sobre a utilização do padrão Adapter para melhorar e diminuir estas diferenças.

Algumas diferenças das APIs podem ter grande impacto em um projeto de grande porte que será desenvolvido para as duas plataformas. Tornando complicada a manutenção futura e até mesmo a compatibilidade e reaproveitamento de código.
Um bom exemplo da diferença das APIs é a classe Observable.
Ext.mixins.ObservableSencha Touch
Ext.util.Observable – Ext JS

Você pode se perguntar o porque desta última classe. A resposta é: reaproveitar o código. Você pode então se perguntar, mas as interfaces não devem ser diferentes, um código para o Touch e outro para o Ext? A resposta é: depende! Se você está no nível de componentes, os fontes devem ser diferentes, visto que mudam os comportamentos, eventos, renderização e outros. Porém, em nível de modelos, manipulação, e outros, os fontes podem se manter, visto que estas funcionalidades não mudam.

Desta forma é possível alterar apenas a interface final do usuário, mantendo a parte padrão por independente da API que se utiliza. A vantagem de desenvolver desta forma é a concisão entre as APIs e até mesmo a manutenção futura. Ao utilizar este formato, se por ventura ocorrer alguma variação na API você apenas modifica um local do código e não cada fonte que utiliza determinada funcionalidade que foi alterada.
Olhando novamente o exemplo acima, há um problema bem simples na classe “MinhaClasse” e nas demais que estão por vir seguindo este padrão. O conceito de DRY é quebrado ao repetir a propriedade extend. Uma forma para melhorar o código acima é a seguinte:

Utilizando este formato sempre será estendida a classe MinhaApi.Observable e todo o código ficará limpo e com fácil manutenção. Se em algum momento mudar o pacote da classe Observable em alguma das APIs basta apenas modificar na class MinhaApi.Observable e toda a sua aplicação estará funcionando.

Outro local que é possível utilizar o padrão Adapter para melhorar a compatibilidade das APIs é na classe Error do Ext. A classe Error não existe no Touch, tornando assim necessário sempre verificar em qual API está para lançar um erro. Ao encapsular as exceções em uma API, novamente o código fica centralizado.

É possível utilizar o padrão Adapter em várias partes das APIs para torná-las padrões. Desta forma melhorando desenvolvimento e a manutenção do código.

Os exemplos deste post estão no github.

Anúncios

2 pensamentos sobre “Utilizando o padrão Adapter com Ext JS e Sencha Touch

  1. Mais uma vez excelente post Júlio César, esse tipo de padrão para quem quer utilizar ExtJS4 e Sencah Touch é de grande valia, pois como demonstrado há algumas pequenas diferenças nas APIs e ficar construindo dois códigos não é uma boa prática.

    Parabéns pela iniciativa e ficarei esperando os próximos posts sobre Padrões

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s