De que se trata o artigo

Este artigo discute o uso de padrões de projeto (design patterns) em soluções de software, apresentando para isto cenários possíveis de utilização dos patterns Abstract Factory, Iterator e Observer.


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 AbstractFactory representa uma alternativa bastante útil para a geração de instâncias de diversos tipos de objetos que estejam relacionados de alguma forma. Já Iterator permite a navegação sequencial ao longo de coleções de objetos, ao passo que o padrão Observer torna possível que objetos relacionados a uma determinada estrutura sejam notificados quando de mudanças de estado ocorridas nesta última.

Design Patterns - Utilizando os padrões Abstract Factory, Observer e Iterator

Ao longo de diversos projetos de software será bastante comum que os desenvolvedores se deparem com a repetição de determinadas situações. Em situações como esta pode ser possível que já existam soluções para certos tipos de necessidades: ao conjunto de recomendações que representam uma alternativa para a resolução um problema específico dá-se o nome de padrão de projeto/design pattern. Padrões são o resultado direto de experiências bem sucedidas durante a elaboração de sistemas, sendo que sua aplicação incentiva não apenas o uso de boas práticas, como também pode conduzir a uma melhor organização estrutural dos softwares que se baseiam nos mesmos.

Em edições anteriores foi dado início a uma discussão sobre o uso de design patterns no desenvolvimento de software, levando em conta ainda para isto de conceitos de orientação a objetos. Este artigo tem por meta dar prosseguimento a esta abordagem, apresentando desta vez características e cenários envolvendo os padrões Abstract Factory, Iterator e Observer. Além disso, serão construídas três aplicações de exemplo, sendo que cada uma destas visa demonstrar como se utilizar estes patterns.

Design patterns (termo conhecido também em português como “padrões de projetos”) são práticas voltadas à resolução de problemas específicos e que podem, por sua vez, acontecer com alguma regularidade em atividades relacionadas à codificação de sistemas. A adoção de padrões representa, em termos gerais, uma forma de reuso de soluções de software cuja validade já foi testada e comprovada ao longo de diversos projetos. A partir da utilização de patterns busca-se a obtenção de aplicações melhor estruturadas, assim como mais flexíveis diante de mudanças que serão comuns ao longo do ciclo de vida de um software.

Por estar focado normalmente na solução de uma questão pontual, um padrão de projeto não está necessariamente ligado ao uso de uma tecnologia específica. É bastante comum que um mesmo design pattern possa ser empregado sem maiores dificuldades nas mais diferentes plataformas de desenvolvimento (Delphi, C#, VB.NET, Java, C++, etc.).

Os primeiros esforços na definição de padrões dentro da área de programação aconteceram ainda na década de 1990, tendo resultado na publicação de 23 patterns conhecidos como GoF. Desde então, diversos outros padrões viriam a ser catalogados, oferecendo assim um amplo leque de soluções aos desenvolvedores de software.

Nota do DevMan

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 situações recorrentes no cotidiano.

Considerando o tipo de problema a que se propõem resolver, os patterns GoF podem ser divididos em:

• Padrões de criação: disponibilizam técnicas para a geração de novas instâncias de objetos;

• Padrões estruturais: definem formas para se trabalhar com a composição de objetos;

• Padrões comportamentais: estabelecem regras para a interação entre classes ou, ainda, definem como serão as responsabilidades das mesmas.

Convém destacar ainda o fato de que muitos patterns costumam ser representados graficamente através da noção UML, sobretudo através de diagrama de classes que demonstram os diversos elementos que definem um padrão.

Nota do DevMan

UML (sigla em inglês para "Unified Modeling Language") é uma linguagem voltada à modelagem de componentes de software e que se baseia em conceitos de orientação a objetos. Trata-se de uma notação que disponibiliza uma série de diagramas, sendo o de classes um dos mais conhecidos (com este último sendo utilizado para a demonstração dos diversos patterns descritos neste artigo).

Criando famílias de objetos com o padrão Abstract Factory

Através do padrão de criação Abstract Factory (Figura 1) é definido o uso de uma interface (ou classe abstrata) que contém a estrutura para a geração de famílias de objetos relacionados (ou mesmo dependentes entre si), sem que contudo se especifiquem as classes concretas das referências que serão criadas.

Diante disso, o consumidor de uma Abstract Factory não precisará possuir a noção de todas as classes concretas que implementam a mesma ou, mesmo, dos tipos que correspondem aos produtos devolvidos pelas operações de tal Factory.

...
Quer ler esse conteúdo completo? Tenha acesso completo