Padrões de Projetos - Parte I - Introdução
Tags: beginners, programming
Published: 2022-07-04 17:49:32

# O que são os Padrões de Projetos?

Padrões de Projetos (ou _Design Patterns_) são basicamente soluções genéricas para problemas comuns observados na engenharia de software. Pense que a maioria dos problemas com que nos deparamos no mundo da computação já foram resolvidos por alguém, em algum momento. Os padrões de projetos são algumas dessas soluções que podem ser adaptadas e utilizadas para resolver alguns dos problemas dos nosso projetos.

Um padrão de projeto não chega a ser um algorítmo, ele é mais uma descrição ou uma "planta de obra": ele irá te mostrar, em um alto nível, o oquê você precisa fazer. Mas o como fazer (a implementação em sí) vai depender das ferramentas que você estiver utilizando.

Portanto, um padrão de projeto não é restrito a uma linguagem de programação específica. Você pode implementar o mesmo padrão em diversas linguagens, e a implementação será diferente, porém o resultado daquele padrão será o mesmo.

**_No caso desta série de artigos, os padrões serão exemplificados utilizando o .NET com C#, porém tenha em mente que os mesmos padrões podem ser aplicados a praticamente qualquer outra linguagem de programação orientada a objetos._**

# The GoF

É difícil precisar quem foi a pessoa que "inventou" os padrões de projetos, mesmo porque eles são soluções para problemas comuns e frequêntes no mundo da programação.

Porém, em 1994, quatro autores (Erich Gamma, John Vlissides, Ralph Johnson e Richard Helm) lançaram o livro ([Padrões de Projeto – Soluções Reutilizáveis de Software Orientado a Objetos](https://www.amazon.com/gp/product/8573076100/)), reunindo 23 padrões de projetos e suas aplicações, e esse livro rapidamente ganhou muita popularidade.

Posteriormente esse livro passou a ser conhecido como o livro da Gangue dos Quatro (_Gang of Four_ em inglês, ou simplesmente _GoF_). E mesmo depois de quase 30 anos do seu lançamento, esses padrões de projetos permanecem como referência até hoje, e eles são extremamente importantes para quem quer produzir um código mais limpo.

# Tipos de Padrões

Nós podemos categorizar os padrões de projetos pela sua intenção (ou propósito), e os padrões apresentados pelo GoF podem ser divididos em 3 tipos:

- **Criacionais** - São padrões utilizados para a criação de objetos, priorizando a flexibilidade e reaproveitamento de código;
- **Estruturais** - Esses padrões ajudam na utilização de classes e objetos menores para criação de estruturas maiores;
- **Comportamentais** - Utilizam de herança para definir padrões de comportamentos e comunicação entre objetos, também ajudando na separação de de responsabilidades.

Nos próximos artigos tratarei de cada um dos 23 padrões de todas essas categorias, mostrando o problema que cada um deles tenta resolver, e trazendo um exemplo de código de cada um deles.
Os exemplos serão feitos em .NET e você poderá facilmente baixá-los e executá-los para ver em mais detalhes a sua implementação.

# Referências

Para a criação desta série de artigos utilizei as seguintes fontes como inspiração e consulta:

- [Site Refactoring Guru - Design Patterns](https://refactoring.guru/design-patterns)
- [Livro Use a Cabeça!: Padrões de Projetos](https://www.amazon.com.br/dp/8576081741/)
- [Curso Design Patterns in C# and .NET](https://www.udemy.com/course/design-patterns-csharp-dotnet/)
- [Site GoF Patterns](https://www.gofpatterns.com/)

Caso queira se aprofundar mais nos padrões de projetos, recomendo fortemente todas elas!