Introdução aos padrões de projeto

Neste artigo abordaremos a história dos padrões de projeto no contexto da computação. Em seguida, daremos enfoque aos padrões GoF e como são usados em classes conhecidas do Java.

De que se trata o artigo: Neste artigo abordaremos a história dos padrões de projeto no contexto da computação. Em seguida, daremos enfoque aos padrões GoF e como são usados em classes conhecidas do Java. Por fim, veremos como melhorar um sistema com a aplicação do padrão Command.

Em que situação o tema útil: O conhecimento de padrões de projeto permite a criação de sistemas melhores, com manutenção menos custosa e reduzindo o retrabalho. Os padrões facilitam o entendimento dos envolvidos no projeto e focam em técnicas testadas e aprovadas para um determinado problema.

Resumo DevMan: O domínio sobre padrões de projeto é atualmente imprescindível ao desenvolvedor de software. Isso porque em qualquer sistema complexo é possível encontrar ao menos um padrão GoF conhecido. Neste artigo, veremos o surgimento deles e como cada um dos vinte e três modelos clássicos pode ser facilmente reconhecido em classes nativas ou em frameworks Java. Além disso, em um exemplo, veremos como o Command pode melhorar a qualidade de um sistema.

No cotidiano do profissional que atua no ramo da tecnologia, não é incomum se deparar com problemas arquiteturais recorrentes nos mais distintos sistemas de software. Nesse contexto, a experiência em resolver tais situações cotidianas é um fator importante que permite ao desenvolvedor de software uma maior habilidade para criar estruturas mais flexíveis e escaláveis que são de fácil entendimento para outros profissionais que atuem futuramente sobre ela. Em geral, essa experiência agregada é um diferencial capaz de produzir aplicações melhores, menos custosas em relação à manutenção posterior e com maior probabilidade de atingirem um determinado objetivo inicial pré-estabelecido. No sentido de compartilhar essa experiência inerente ao desenvolvimento de aplicações melhores é que surgiram os primeiros estudos sobre padrões de projeto.

Os padrões de projeto estão enraizados nas pesquisas realizadas pelo arquiteto e urbanista austríaco chamado Christopher Wolfgang Alexander. Ele foi responsável pela constatação, através de observação sobre inúmeras cidades medievais, da existência de padrões que as tornavam mais harmoniosas e belas. O interesse dele em traduzir tais padrões em maneiras de fácil entendimento para a aplicação em projetos de construção futuros ou melhoria dos pré-existentes resultou na publicação, em 1977, do seu livro mais famoso: “A Pattern Language: Towns, Buildings, Construction”. Nesse livro, ele enumerou as regras e fez o uso de ilustrações para promover métodos exatos para construir desenhos práticos, seguros e atrativos que poderiam ser reaplicados para os projetos de construção. Um dos grandes benefícios dessa obra foi que, ao tornar os padrões reusáveis, serviu como grande auxiliar na tomada de decisões de arquitetura. Essa característica inspirou engenheiros da computação e pesquisas aplicadas a software.

O termo “padrão de projeto”, no contexto da arquitetura de software, é considerado hoje como um efeito colateral da publicação do livro “Design Patterns: Elements of Reusable Object-Oriented” de Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides. Apesar disso, os primeiros trabalhos relacionados à pesquisa de padrões para a arquitetura de sistemas datam do final da década de oitenta, com as experimentações de Kent Back e Ward Cunningham, pioneiros da metodologia de desenvolvimento ágil de aplicações e da elaboração de aplicações baseadas em testes, Extreme Programming (XP) e Test Driven Development (TDD).

Esses trabalhos tinham o interesse comum de estudar e encontrar padrões em soluções amplamente empregadas em software para catalogá-las de maneira a torná-las uma base para uma situação equivalente futura. Assim, foram descritos os primeiros padrões de projeto para o desenvolvimento de sistemas.

O padrão de projeto nada mais é do que um modelo de uma experiência amplamente testada e aprovada que pode ser usado como um guia para a resolução de problemas específicos de arquiteturas orientadas a objetos. É uma alternativa reutilizável, baseada na abstração das escolhas bem sucedidas para atender uma dificuldade conhecida que é composta de quatro elementos essenciais: o nome, o problema que pretende resolver, a solução para o problema e as consequências da aplicação dele. "

[...] continue lendo...

Artigos relacionados