Padrões de Projeto
Autor: Lucas Bessa | Publicado: 2012-04-02T11:40:00-03:00

Ei pessoal!
Como estou estudando sobre padrões de projetos resolvi fazer um post com uma breve explicação de o que é e como funciona os padrões.
E para descontrair uma tirinha do site Vida de Programador 





O que são padrões de projetos? 

Os padrões de projeto segundo o Wikipédia

Um Padrão de Projeto de Software ou Padrão de Desenho de Software, também muito conhecido pelo termo original em inglês, Design Pattern, descreve uma solução geral reutilizável para um problema recorrente no desenvolvimento de sistemas de software orientados a objetos.
 Não é um código final, é uma descrição ou modelo de como resolver o 
problema do qual trata, que pode ser usada em muitas situações 
diferentes. Os Padrões de Desenho normalmente definem as relações e 
interações entre as classes ou objetos, sem especificar os detalhes das 
classes ou objetos envolvidos, ou seja, estão num nível de generalidade 
mais alto.

&nbsp;Um padrão de projeto nomeia, abstrai e identifica os aspectos-chave de uma estrutura de projeto comum para torná-la útil para a criação de um projeto orientado a objetos reutilizável. O padrão de projeto identifica as classes e instâncias participantes, seus papéis, colaborações e a distribuição de responsabilidades. Focaliza em um problema e descreve quando ser aplicado.
Acho que a escolha da linguagem de programação também influencia no uso dos padrões de projetos.
Além disso os padrões de projetos tem as seguintes características:


Nome: é usado para identificar o padrão;
Intenção: representa o propósito do padrão de projeto;
Motivação: descreve um cenário que contém um problema que o padrão irá resolver;
Aplicabilidade: descreve as situações nas quais os padrões podem ser aplicados;
Estrutura: representação gráfica através de diagramas de classe e seqüência para demonstrar as classes do padrão e a relação entre os objetos;
Participantes: entidades que participam do padrão;
Colaborações: descreve como as classes envolvidas colaboram para realizar suas tarefas;
Conseqüências: avaliação dos resultados que serão obtidos com a aplicação do padrão;
Implementação: como o padrão deve ser implementado;
Exemplo de código: códigos que ilustram a implementação do padrão;
Usos conhecidos: demonstração de casos de sistemas reais em que os padrões foram utilizados;
Padrões relacionados: descreve o relacionamento existente entre os padrões.



&nbsp;Padrão Gang of Four

Os padrões GoF ("Gang of Four", em português Gangue dos Quatro, conhecidos assim pelo fato do livro ter sido escrito por Erich Gamma, Richard Helm, John Vlissides, Ralph Johnson) são classificados em 3 grupos: padrões de criação, padrões estruturais,&nbsp; padrões comportamentais.

Padrões de criação

Alguns dos padrões de criação (não sei se estão todos aqui)


Abstract Factory
Builder
Factory Method
Prototype
Singleton&nbsp;

&nbsp;Os padrões de criação são os padrões de projeto que abstraem o processo de instanciação das classes, ajudando o sistema ser independente dos objetos concretos criados. Os mais utilizados são&nbsp; o Singleton e Abstract Factory.



Padrões de Estruturais&nbsp;




Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy

&nbsp;Os padrões de estruturais possuem como objetivo a definição da composição de objetos e classes na formação de estruturas maiores. Os padrões estruturais podem ser aplicados a classes ou objetos. Enquanto os padrões estruturais de objetos demonstram maneiras de completar objetos para adquirir novas funcionalidades, os padrões estruturais de classe usam herança para definir implementações ou interfaces.



Padrões Comportamentais




Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Tamplate Method
Visitor



Os padrões comportamentais descrevem a interação e atribuição de responsabilidades entre objetos e classes, sendo que, para determinar o comportamento entre classes, utilizam herança e, para comportamento entre objetos, utilizam composição de objetos.



Além desses padrões citados ainda existem os padrões GRASP (General Responsability Assignment Software Patterns), que foram criados posteriormente.

&nbsp;Este post foi somente para dar uma introdução no assunto de padrões de projetos e despertar a curiosidade de vocês, em breve especificarei um pouco mais sobre alguns dos mais utilizados no mercado.



Obrigado! E vamos estudar!