Este artigo tem como objetivo geral apresentar uma noção geral de como padrões de projeto são largamente aplicados no desenvolvimento de aplicações móveis, e como objetivo especifico, demonstrar como adaptar e aplicar o uso do padrão Mediator nas plataformas iOS e Android.
Em que situação o tema útil:
Este artigo é voltado para analistas de sistemas, desenvolvedores, estudantes, e outros profissionais da área de desenvolvimento de software. Em um projeto de desenvolvimento de aplicação móvel com UI complexa, pode-se ganhar bastante manutenibilidade e clareza de código ao usar padrões de projeto, que é o principal tema desse artigo.
Resumo DevMan:
O desenvolvimento de aplicações móveis vem adquirindo grande força e gerando bastante capital para empresas e indivíduos. Logo a competição no mercado vem crescendo, e então o produto resultante do trabalho de desenvolvimento deve ter cada vez mais qualidade. Com objetivo de aumentar a qualidade, a manutenibilidade e a clareza do código desenvolvido, este artigo mostra como aplicar o padrão de projeto Mediator no desenvolvimento em iOS e Android.
Muitos são os desafios encarados pelos profissionais que atuam no desenvolvimento de software ao se depararem com um projeto de sistema complexo. Por esse motivo, os cientistas que estudam e aplicam a engenharia de software, no decorrer dos anos, foram desenvolvendo alguns padrões de projeto para resolver e amenizar uma série de problemas, tais como encapsulamento, acoplamento, dependência, entre outros. Esse desenvolvimento de padrões de projeto teve início com Kent Beck (pai do eXtreme Programming) e Ward Cunningham que, em 1987, criaram alguns padrões baseados nos trabalhos datados da década de 70 de Cristopher Alexander.
Hoje contamos com uma quantidade grande de padrões de projeto, temos tantos padrões propostos que é difícil encontrar um desenvolvedor em início de carreira que conheça muitos desses. Desta forma, programadores que buscam se destacar no meio, devem procurar entender e saber aplicar padrões de projeto de forma eficiente e adaptável.
Primeiramente devemos garantir o entendimento do que é um padrão de projeto, e não confundi-lo com padrões arquiteturais. Padrões de projeto são padrões que têm como chave a orientação a objetos e procuram diminuir a complexidade da implementação de um determinado código. Como exemplo temos o Adapter, Listener, Observer, Mediator, entre outros. Padrões arquiteturais procuram resolver problemas de arquitetura de software, como comunicação entre máquinas, servidores, páginas. Como exemplo desses padrões podemos identificar o MVC (Mode-View-Controller) e o SOA (Serive-Oriented Architecture). É de suma importância entender esta diferença para evitar confusões futuras.
Padrões de projeto e plataformas móveis
Como discutimos anteriormente, os padrões de projeto foram criados para facilitar e diminuir a complexidade da implementação de sistemas. Dessa forma, os big players que desenvolvem as plataformas móveis como a Apple Inc. e as empresas que formam a OHA (Open Handset Alliance) não poderiam deixar de utilizar em suas plataformas e disponibilizar em seus SDKs componentes e estruturas que fizessem uso de tais padrões.
Os padrões de projeto podem ser subdivididos em 3 categorias:
• criacionais: usados para construir objetos com objetivo de reduzir acoplamento;
• estruturais: usados para criar grandes estruturas de objetos entre vários objetos díspares, e;
• comportamentais: usados para gerenciar algoritmos, relacionamentos e responsabilidades entre objetos.
Os padrões de projeto ainda podem ter dois escopos diferentes: escopo de classe e escopo de objeto.
Às vezes, nem conhecemos um padrão de projeto, mas o utilizamos em larga escala desenvolvendo nossas aplicações. Entretanto, conhecer detalhes sobre esses padrões elevam a capacidade de desenvolvimento de uma equipe. Se você já usou algum Adapter, Listener, Delegate, Factory, Target, você já fez uso de um padrão de projeto. Eles estão nos SDKs que utilizamos, cabe a nós tomar conhecimento disto.
Para melhor esclarecer o uso de padrões de projeto nos SDKs, veremos exemplos de algumas implementações para iOS e Android. Primeiramente, no Cocoa Framework (iOS e MacOSX) o padrão Factory é bastante utilizado para abstrair a implementação de várias classes como NSString, NSData, NSDictionary, NSSet, e NSArray. Esse framework também faz uso do padrão Command para encapsulamento de chamadas com classes como a NSInvocation. Já os padrões Composite, Decorator e Adapter são usados para desenhar componentes de User Interface nas aplicações. Inclusive, esse ...