sexta-feira, 25 de janeiro de 2008

Padrões de projeto de software

Os padrões de projeto de software ou padrões de desenho de software, também muito conhecido pelo termo original em inglês: Design Patterns, descrevem soluções para problemas recorrentes no desenvolvimento de sistemas de software orientados a objetos. Um padrão de projeto estabelece um nome e define o problema, a solução, quando aplicar esta solução e suas conseqüências.

Os padrões de projeto visam facilitar a reutilização de soluções de desenho - isto é, soluções na fase de projeto do software, sem considerar reutilização de código. Também acarretam um vocabulário comum de desenho, facilitando comunicação, documentação e aprendizado dos sistemas de software.

Um Padrão de Projeto pode ser definido como “a solução para um problema em um contexto”. Isto significa que os padrões de projeto nos oferecem soluções prontas para utilizarmos em determinados problemas que podemos enfrentar quando desenvolvemos um software orientado a objetos.

Para realizar a descrição de um padrão de projeto devemos especificar o seu nome, que o identifica e descreve; o contexto, ou seja, a situação que está gerando se está na qual se deve aplicar o padrão; o problema, que é a meta que está se tentando atingir neste contexto; a solução proposta pelo padrão para o problema no contexto especificado e as conseqüências da aplicação do padrão, podendo ser elas boas ou ruins. Para compreender melhor esse conceito, veja o exemplo abaixo, que não pode ser considerado um padrão de projeto, servindo apenas para ajudar a compreender o modo como um padrão de projeto deve ser definido.

  • Nome: Chegar à reunião!
  • Problema: Como chegar no horário à reunião?
  • Contexto: Você está trancado dentro de casa!
  • Solução: Pule a janela, entre no carro e corra até o trabalho.
  • Conseqüências: Você deve achar a chave ou pular a janela para entrar em casa.

Podemos classificar os padrões de projeto de várias maneiras, porém o mais comum é classificá-los de acordo com os tipos de problemas que eles resolvem. De acordo com esse critério, os padrões podem ser:

  • Criação: resolvem os problemas da criação de objetos;
  • Estruturais: que lidam com os problemas de relacionamentos entre objetos;
  • Comportamentais: que lidam com os problemas de atribuição de responsabilidades aos objetos.

Os padrões de projeto solucionam muitos dos problemas que os projetistas enfrentam no dia a dia, e de diversas maneiras diferentes. Nesta série de post tentarei mostrar alguns dos padrões mais comuns, explicando o contexto, o problema, a solução e suas conseqüências com exemplos simples e acessíveis. Todos os exemplos estarão escritos na linguagem Java, mas são aplicáveis em qualquer linguagem orientada a objetos como .Net, Delphi, C++ ou outras.

Um comentário:

Fabio Cordeiro disse...

Muito interessante a abordagem sobre padrões. Sou estudando de Sistemas de Informação e estou fazendo a disciplina Arquitetura de Software.