O que são Padrões de Projeto GoF (Gang Of Four)?

Fala galera, tudo bom? Beleza. Hoje venho trazer um assunto que me faz ter muita curiosidade e sede de conhecimento. Vamos falar de padrões de projetos.

Livro: Padrões de Projeto: Soluções reutilizáveis de software orientado a objetos
Livro: Padrões de Projeto: Soluções reutilizáveis de software orientado a objetos

Primeiro vamos falar deles em geral mas  em outros posts vamos colocar os 23 padrões em prática com .NET e tentar explicar mais claramente e com mais detalhes.

Nas ultimas semanas, olhando para o mercado de TI eu me deparei com algumas coisas que me levaram a estes padrões de projetos, o Gang Of Four. Praticamente todas as vagas relacionadas a arquiteto de software pede um sólido conhecimento nestes padrões pelo o que pude perceber.

Mas ai alguns (como eu) podem ter se perguntado, mas o que é este tal de “Gang of Four (Gangue dos quatro, imagem do livro acima)”? Então, em 1994 quatro autores, Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, publicaram um livro, o Design Patterns: Elements of Reusable Object-Oriented Software (Padrões de Projeto: Soluções reutilizáveis de software orientado a objetos) para explicar conceitos de padrões de projeto para o desenvolvimento de software. Estes quatro autores ficaram então conhecidos como Gang Of Four.

Uma breve sinopse:

“Este livro é uma importante contribuição para aqueles que desenvolvem projetos orientados a objetos. Alguma vez você tentou descrever uma ideia para a qual não tem um nome preciso? Pode ser frustrante. Padrões de Projeto organiza e apresenta um catálogo de idiomas e estilos de projeto, comprovados na prática, para estruturar, criar e manipular objetos. Mais importante ainda, ele dá um nome para cada uma dessas soluções de projeto, permitindo que equipes diferentes compartilhem um vocabulário comum.” (Rebeca J. Wirfs-Brock, diretora de Object Techonology Servicesda Digitalk.)
Para quem se interessar em ler, fique você sabendo que ele também tem versão em português que foi publicada em 2008 pela editora Bookman.

Padrões de Projeto GoF

Existem 23 padrões de projetos definidos pelo GoF, que são separados em três grupos, cada um dos grupos visa solucionar um tipo de cenário com um determinado problema.

01. Creational Design Patterns (Padrões de Projeto de Criação)

Estes padrões lidam com o processo de criação de novos objetos de uma forma que ele pode ser desacoplado do seu sistema de implementação. Isso fornece mais flexibilidade em decidir quais objetos precisam ser criados para um determinado  caso ou cenário. São os seguintes:

  1. Factory Method : Cria instâncias de classes derivadas
  2. Abstract Factory : Cria instâncias de muitas classes  several classes pertencentes a diferentes famílias
  3. Builder : Separa a construção do objeto de sua representação
  4. Prototype : Cria um objeto duplicado ou um clone do objeto
  5. Singleton : Garante que a classe só tenha uma instância

02. Structural Design Patterns (Padrões de Projeto Estruturais)

Estes padrões lidam com a composição das estruturas dos objetos. O conceito de herança (caso queira reforçar ou relembrar de alguns conceitos de herança e polimorfismo pode olhar este outro artigo) é usado para compor interfaces e definir várias formas de compor objetos para obter novas funcionalidades. São os seguintes:

  1. Adapter : Combinar interfaces de classes diferentes
  2. Bridge : Separar uma abstração de objeto de sua implementação
  3. Composite : Uma estrutura em árvore de simples e objetos compostos
  4. Decorator : Adicionar responsabilidades para objetos dinamicamente
  5. Façade : Uma simples classe que representa um complexo sistema inteiro
  6. Flyweight : Minimizar o uso da memória compartilhando o máximo de dados possível com objetos similares
  7. Proxy: Fornece um objeto substituto, que faz referência a outro objeto

03. Behavioral Design Patterns (Padrões de Projeto Comportamentais)

Estes padrões lidam com o processo de comunicação, gerenciamento de relações, e responsabilidades entre objetos. São os seguintes:

  1. Chain of Responsibility: Passa uma requisição entre uma lista ou objetos encadeados.
  2. Command: Embrulha uma requisição em um objeto como um comando e passa para o objeto invocador
  3. Interpreter: Implementar uma linguagem computacional especializada para resolver problemas específicos rapidamente
  4. Iterator: Iterators são usados para acessar os elementos de um objeto agregado sequencialmente sem expor sua
  5. Mediator: Fornece uma interface unificada para um conjunto de interfaces em um subsistema
  6. Memento: Oferece a capacidade de restaurar um objeto ao seu estado anterior (rollback)
  7. Observer: Objetos registrados para observar um evento que pode ser disparado por outro objeto.
  8. State: Uma maneira limpa para um objeto mudar parcalmente seu tipo em tempo de execução
  9. Strategy: Algoritimos podem ser selecionados em tempo real
  10. Visitor: Um modo e separar um algoritmo de um objeto
  11. Template Method: Descreve o esqueleto de um programa

Conclusão e próximos passos

Bom pessoal, é isso. Espero que tenha dado para ter uma ideia do que são estes padrões de projetos que as vezes escutamos falar mas não sabemos o que realmente significam. Ao decorrer do tempo irei demonstrar o uso de cada um utilizando .NET. Então fiquem ligados e até a próxima 😀
Kelvin Rodrigues
PEACE O/

Fontes:

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s