Este artigo procura abordar a utilização de padrões de projeto (design patterns) em soluções de software, demonstrando para isto como os patterns Factory Method e Template Method podem ser empregados na elaboração de sistemas com uma arquitetura flexível e bem definida.
Em que situação o tema é útil
Design patterns são técnicas pré-definidas e empregadas na resolução de problemas em atividades que envolvam a construção de softwares. O pattern Factory Method é uma alternativa que pode ser empregada na geração de novas instâncias de tipos que contam com uma estrutura em comum, sem contudo obrigar as classes consumidoras a implementarem as condições que levam à obtenção dos objetos esperados. Já o padrão Template Method é uma opção para situações que envolvam variações dentro de um algoritmo de processamento, nos quais determinadas etapas podem apresentar comportamentos próprios decorrentes de algum tipo de necessidade específica.
Design Patterns - Utilizando os padrões Factory Method e Template Method
É extremamente comum, no decorrer de uma série de projetos, a repetição de determinadas atividades que requerem um tipo de tratamento particular. Em diversos casos é possível que outros profissionais já tenham se deparado com situações semelhantes e, a partir disso, disponibilizado meios que buscam resolver estas questões. Tais soluções são conhecidas como design patterns (padrões de projetos), focando normalmente na resolução de problemas específicos e recorrentes dentro do desenvolvimento de software. O pattern Factory Method é uma alternativa que pode ser empregada para a instanciação de objetos de diferentes tipos, mas que contam com uma estrutura comum. Já o padrão Template Method permite o controle de comportamentos variáveis dentro do algoritmo que corresponde às ações desencadeadas por um método, fazendo uso para isto de subclasses que estendem tipos abstratos.
É um fato dado como certo que mudanças acontecerão ao longo do ciclo de vida de uma aplicação de software. Alterações em atendimento a uma nova necessidade da organização ou mesmo a evolução de recursos pré-existentes são aspectos com os quais os profissionais elencados em projetos de sistemas sempre irão se deparar. Novas soluções de software também são criadas a todo o momento, como um reflexo das constantes mudanças a que estão sujeitas muitas companhias.
Design patterns não são conceitos que se encontram ligados a uma tecnologia específica. Como estão voltados à solução de problemas recorrentes em projetos de software, representando soluções concisas e que priorizam a obtenção de código bem estruturado, muitos padrões podem ser aplicados a aplicações concebidas nas mais diferentes linguagens de programação (Delphi, C#, VB.NET, Java, C++ etc.).
Considerando a ampla diversidade de tipos de aplicações de software existentes atualmente, não é difícil de imaginar que tenham sido desenvolvidos patterns para os mais diversos contextos. Os esforços para a definição de padrões iniciaram-se na área de software ainda nos anos 90 com a publicação de 23 padrões conhecidos como GoF.
GoF é a sigla em inglês para “Gang of Four”, sendo um apelido dado ao trabalho conjunto de 4 autores (Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides), os quais documentaram 23 padrões no famoso livro “Design Patterns: Elements of Reusable Object-Oriented Software”. Tais patterns foram especificados na época tomando-se como base exemplos elaborados em C++ e SmallTalk; no entanto, a ampla abrangência destes padrões possibilitou que os mesmos sejam utilizados ainda hoje, auxiliando desenvolvedores Delphi, .NET e Java na resolução de uma série de problemas recorrentes em suas atividades cotidianas.
Objetivos do uso de padrões
A utilização de patterns em um projeto de software tem por principais objetivos:
• Evitar que se obtenham extensas construções de código durante a construção de uma solução;
• Possibilitar que o código obtido seja de fácil compreensão por parte de desenvolvedores que venham a trabalhar com o mesmo;
• Uma maior flexibilidade para se alterar uma aplicação quando da necessidade de se efetuarem mudanças em atendimento a requisitos de negócio;
• Divisão equilibrada de responsabilidades entre as diferentes partes que compõem um projeto;
• O reuso de componentes de software, não ficando isto restrito a uma única aplicação, mas com o reaproveitamento de funcionalidades em mais de uma solução;
• Redução eficiente da duplicação de código através de técnicas de fatoração do código, reduzindo-os a unidades pequenas e coesas.
Benefícios da aplicação de design patterns
São vantagens do uso de padrões de projetos na construção de aplicações:
• Uma maior padronização em atividades relacionadas à codificação de funcionalidades;
• A possibilidade de reuso de uma mesma arquitetura em diversos projetos;
• Uma maior coesão nos diferentes componentes de uma solução, com cada classe acumulando apenas funções relacionadas ao propósito para o qual a mesma foi criada inicialmente;
• Maior facilidade na manutenção de uma aplicação, com menores impactos quando da necessidade de se modificar algo, considerando para isto um baixo acoplamento entre os diversos componentes que constituam a solução;
• A redução de custos em novos projetos, a partir do reaproveitamento de componentes e funcionalidades já elaborados anteriormente;
...