https://github.com/benevanio/gof
https://github.com/benevanio/gof
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/benevanio/gof
- Owner: Benevanio
- Created: 2025-05-15T18:25:47.000Z (5 months ago)
- Default Branch: master
- Last Pushed: 2025-05-23T00:10:46.000Z (5 months ago)
- Last Synced: 2025-05-23T01:27:05.149Z (5 months ago)
- Language: TypeScript
- Size: 219 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
```markdown
# 👑 Padrões de Projeto GoF (Gang of Four)Este repositório contém implementações e explicações dos **23 padrões de projeto** catalogados pelos autores do livro *"Design Patterns: Elements of Reusable Object-Oriented Software"*, conhecidos como **Gang of Four (GoF)**.
## 🎯 Objetivo
Demonstrar o uso prático dos padrões de projeto, organizados em três categorias principais:
- **Padrões Criacionais**
- **Padrões Estruturais**
- **Padrões Comportamentais**Cada padrão é implementado em **JavaScript** ou **TypeScript**, acompanhado de uma explicação simples e exemplos para facilitar o entendimento.
---
## 📦 Estrutura do Projeto
```
GOF/
│
├── criacionais/ # Padrões que tratam da criação de objetos
├── estruturais/ # Padrões que organizam a estrutura dos objetos
├── comportamentais/ # Padrões que lidam com a comunicação entre objetos
└── README.md # Documentação principal````
---
## 🧱 Padrões Criacionais
Esses padrões abstraem o processo de instanciamento de objetos, tornando o sistema mais flexível.
| Padrão | Descrição |
|-------------------|-----------|
| **Singleton** | Garante que uma classe tenha apenas uma instância e fornece um ponto de acesso global. |
| **Factory Method**| Define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar. |
| **Abstract Factory**| Cria famílias de objetos relacionados sem depender de suas classes concretas. |
| **Builder** | Separa a construção de um objeto complexo da sua representação. |
| **Prototype** | Cria novos objetos copiando uma instância existente (clone). |---
## 🧩 Padrões Estruturais
Focados em compor classes e objetos para formar estruturas maiores e mais eficientes.
| Padrão | Descrição |
|----------------|-----------|
| **Adapter** | Permite a compatibilidade entre interfaces diferentes. |
| **Bridge** | Desacopla a abstração da implementação. |
| **Composite** | Compor objetos em estruturas de árvore. |
| **Decorator** | Adiciona responsabilidades a um objeto dinamicamente. |
| **Facade** | Fornece uma interface simplificada para um conjunto de interfaces. |
| **Flyweight** | Reduz o uso de memória compartilhando dados comuns entre objetos semelhantes. |
| **Proxy** | Um substituto ou lugar-holder para outro objeto para controlar o acesso a ele. |---
## 🧠 Padrões Comportamentais
Tratam da comunicação e responsabilidades entre objetos.
| Padrão | Descrição |
|--------------------|-----------|
| **Observer** | Notifica múltiplos objetos sobre alterações em um objeto. |
| **Strategy** | Permite a definição de uma família de algoritmos, encapsulando-os. |
| **Command** | Encapsula uma solicitação como objeto. |
| **Chain of Responsibility** | Passa a solicitação ao longo de uma cadeia de objetos. |
| **Iterator** | Acessa os elementos de um objeto sequencialmente. |
| **Mediator** | Define um objeto que encapsula como os objetos interagem. |
| **Memento** | Salva e restaura o estado anterior de um objeto. |
| **State** | Permite que um objeto altere seu comportamento quando seu estado interno muda. |
| **Template Method**| Define o esqueleto de um algoritmo e permite que subclasses modifiquem etapas específicas. |
| **Visitor** | Permite adicionar operações a objetos sem alterar suas classes. |
| **Interpreter** | Implementa uma linguagem específica de domínio (DSL). |---
## 🚀 Como usar
Clone o repositório:
```bash
git clone https://github.com/Benevanio/GOF.git
cd GOF
````Navegue até a pasta desejada e execute os arquivos com Node.js:
```bash
node criacionais/Singleton.js
```---
## 📚 Requisitos
* Node.js 18+ (ou superior)
* Git (para clonar o projeto)
* VS Code (opcional)---
## 🤝 Contribuições
Contribuições são bem-vindas! Fique à vontade para enviar melhorias, exemplos adicionais ou refatorações.
---
## 🧠 Referências
* [Design Patterns: Elements of Reusable Object-Oriented Software (GoF)](https://en.wikipedia.org/wiki/Design_Patterns)
* [Refactoring Guru](https://refactoring.guru/design-patterns)---
## 👤 Autor
Desenvolvido por **[Benevanio Dos Santos Conceição](https://github.com/Benevanio)**
---
## 🏷️ Licença
MIT License. Veja o arquivo [LICENSE](./LICENSE) para mais detalhes.