Padroes de Projeto (os Design Patterns), sao combinacoes de classes e algoritmos associados que cumprem com propositos comuns de projeto. Sao normalmente solucoes consagradas que se baseiam nas estruturas da orientacao a objetos em sua melhor forma.Cada padrao descreve um problema no nosso ambiente e o cerne da sua solucao, de tal forma que voce possa usar essa solucao mais de um milhao de vezes, sem nunca faze-lo da mesma maneira.Os padroes de projeto, basicamente, se dividem em grandes 3 categorias: Criacional, Estrutural e Comportamental. Sao 4 os elementos importantes que definem um Padrao (Pattern), sao eles:Nome: A identificacao do Pattern e importante pois ele torna-se membro do vocabulario do projetista e de seus colegas; Problema: descreve quando aplicar o Pattern. Apresenta a classe de problemas em questao e seu contexto; Solucao: descreve os elementos que fazem parte do design, seus relacionamentos, responsabilidades e colaboracoes; Consequencias: os resultados e efeitos causados pela aplicacao do pattern. Para se descrever e catalogar um Padrao de Projeto com total completude de informacoes, sao necessarios os seguintes dados:Nome do Pattern e Classificacao: Passa a fazer parte do vocabulario dos projetistas;Proposito: Respostas para as perguntas - O que o Pattern faz? Que tipo de problema ou caracteristica particular de Design ele trata?Tambem Conhecido Como: Conjunto de outros nomes (apelidos) conhecidos para o Pattern, se existir algum;Motivacao: Um cenario que ilustra o problema de Design e como as estruturas de classes e objetos no Pattern o resolvem;Aplicacao: Respostas para as perguntas - Quais sao as situacoes onde este Pattern pode ser aplicado? Quais sao os exemplos de Designs que ele pode tratar? Como voce pode reconhecer estas situacoes? Estrutura: Uma representacao grafica das classes no Pattern. Participantes: As classes e/ou objetos que participam no Design Pattern, e suas responsabilidades; Colaboracoes: Como os participantes interagem para cumprir suas responsabilidades;Consequencias: Respostas para as perguntas - Como o Pattern alcanca seus objetivos? Quais sao os resultados do uso do Pattern?Implementacao: Dicas e tecnicas que Designer deve saber, e possiveis armadilhas para as quais ele deve estar preparado;Codigo Exemplo: Fragmentos de codigo que ilustrem como o Pattern deve ser implementado;Usos Conhecidos: Exemplos de utilizacao do Pattern em sistemas ja implementados;Patterns Relacionados: Lista de todos os Patterns fortemente relacionados ao Pattern em questao e as suas principais diferencas. Atualmente existem diversos catalogos de padroes ja criados, dentre os grandes, posso citar alguns aqui:Padroes Gof Padroes JEE Padroes MicrosoftPadroes Corporativos Padroes de Integracao Padroes SOAOs Patterns sao oriundos de alguns principios de programacao, como por exemplo, o Design de Objetos, o que se torna algo complexo em projetos de software, ja que muitos parametros estao implicitos neste conceito, como encapsulamento, granularidade, dependencia, flexibilidade, desempenho, evolucao e reutilizacao.Muitos objetos oriundam da analise, e muitos destes nao sao abstracoes do mundo real, como vetores por exemplo. Por outro lado, existem objetos que raramente aparecem durante a analise, e sim, aparecem para auxiliarem a fase de projeto. Logo, os padroes de projeto ajudam a identificar abstracoes menos obvias bem como os objetos que podem captura-las. Padroes como Composite (tratamento uniforme de objetos que nao tem uma contrapartida