Clique aqui para ler essa revista em PDF.
Padrões de Projeto
Parte III – Design Patterns
Novamente estamos aqui, agora com o último artigo desta série, que buscou levar a vocês uma introdução ao mundo dos padrões de projeto. Como mencionado na edição anterior, o artigo de hoje mostrará como os padrões estão classificados e alguns exemplos práticos.
A “gangue dos quatro” (GoF - pessoas que catalogaram os padrões de projeto mais comuns), realizou um grande trabalho de pesquisa que resultou em uma classificação dos padrões em algumas categorias: Criacionais, Estruturais e Comportamentais.
Nota: Como ficaria muito extensa a explicação e demonstração de cada padrão, demonstraremos apenas um padrão de cada classificação e nas referências do final do artigo maiores detalhes poderão ser encontrados.
Criacionais
Os padrões dessa categoria têm a característica de abstrair a instanciação e o processo de instanciação de objetos, de tal forma que um sistema pode não depender (saber) como são criados determinados objetos. Para conseguir essa independência e flexibilidade, os padrões criacionais encapsulam as classes concretas que existem. Nessa categoria existem cinco padrões mais comuns:
·Abstract Factory;
·Builder;
·Singleton;
·Prototype;
·Factory Method.
Factory Method
Fornece uma interface para criação de objetos, porém essa criação é determinada por suas subclasses. Vamos a um exemplo prático. Podemos utilizar esse padrão para abstrair a criação de formulários de nossos sistemas, para isso inicie um novo projeto no Delphi 7 (você pode utilizar também o Delphi 2005/2006) e organize o formulário principal como é exibido na Figura 1.
Figura 1. Formulário principal
Agora adicione mais três formulários e salve o projeto, podendo-se deixar os nomes padrão. Vamos agora criar nossa classe que usará o padrão Factory Method. Crie uma nova unit no projeto e a salve como “FormFactoryU.pas” e adicione a classe da Listagem 1. Adicione também uma função pública, da qual nossa “fábrica” (Factory) de formulários será acessada:
" [...] continue lendo...