Artigo Clube Delphi 114 - Abstract Factory

Vamos entender a importância dos padrões de projeto, mais necessariamente dos padrões criacionais para tratamento de famílias de objetos distintas e a instanciação de seus objetos. Os padrões FactoryMethod e Abstract Factory serão implementados para então analisarmos suas vantagens.

Fique por dentro

Os padrões criacionais permitem uma flexibilização no ato de instanciar objetos pertencentes a uma hierarquia de classes. Isso é obtido através da decomposição do problema para privilegiar uma melhor manutenção do código. Ao fazer isso, conseguimos um fraco acoplamento e uma baixa coesão, que é tudo que um código orientado a objetos necessita.

Auxilia na refatoração de código e manutenções futuras, no caso de novos requisitos impactarem diretamente numa hierarquia de classes.

Na maior parte dos projetos orientados a objetos, quase sempre teremos que lidar com famílias de objetos e a necessidade de criarmos instâncias das inúmeras classes presentes ali. Nem sempre esse processo é bem coordenado e manipulado, sobretudo se considerarmos as mudanças nos requisitos futuros do software. Desta forma, pretendemos apresentar um padrão de projeto que torna essa tarefa bem mais flexível e organizada, a fim de privilegiar a manutenção futura e decompor melhor o problema a ser tratado, promovendo um fraco acoplamento entre as classes e a baixa coesão.

Um padrão descreve uma solução para um problema que ocorre com frequência durante o desenvolvimento de software, podendo ser considerado como um par “problema/solução” (Buschmann, 2003). Projetistas familiarizados com certos padrões podem aplicá-los imediatamente a problemas de projeto, sem ter que redescobri-los (Gamma, 2000). Um padrão é um conjunto de informações instrutivas que possui um nome e que capta a estrutura essencial e o raciocínio de uma família de soluções comprovadamente bem sucedidas para um problema repetido que ocorre sob um determinado contexto e um conjunto de repercussões (Appleton, 2000).

Padrões de software podem se referir a diferentes níveis de abstração no desenvolvimento de sistemas orientados a objetos. Assim, existem padrões arquiteturais, em que o nível de abstração é bastante alto, padrões de análise, padrões de projeto, padrões de código, entre outros. As diversas categorias de padrões são discutidas a seguir. O uso de padrões proporciona um vocabulário comum para a comunicação entre projetistas, criando abstrações num nível superior ao de classes e garantindo uniformidade na estrutura do software (Gall,1996). Além disto, eles atuam como blocos construtivos a partir dos quais, projetos mais complexos podem ser construídos (Gamma, 2000).

Diversos autores têm proposto centenas de padrões nas mais diversas áreas de aplicação. Esses padrões são descobertos após a abstração de fatores comuns em diversos pares problema-solução, podendo-se situar em várias faixas de escala e abstração. Existem padrões de domínio específico, como por exemplo, para sistemas multimídia educativos e também padrões independentes de domínio, como por exemplo padrões para projeto de interface. Há padrões que ajudam a estruturar um sistema de software em subsistemas e outros que ajudam a implementar aspectos de projeto particulares.

Olhando mais de perto para muitos padrões, percebe-se que um padrão resolve um problema, mas sua aplicação pode gerar outros problemas, que podem ser resolvidos por outros padrões. Em geral não existem padrões isolados: um padrão pode depender de outro no qual esteja contido, ou das partes que ele contém, ou ser uma variação de outro, ou ser uma combinação de outros. De maneira geral, um padrão e seus variantes descrevem soluções para problemas muito similares, que variam em algumas das influências envolvidas."

[...] continue lendo...

Artigos relacionados