Este projeto demonstra a implementação do padrão de projeto Composite em Go, utilizando a analogia de uma árvore genealógica para criar um catálogo de produtos flexível e escalável.
O objetivo deste projeto é ilustrar como o padrão Composite permite:
- Representar estruturas hierárquicas: Organizar produtos em categorias e subcategorias de forma intuitiva.
- Tratar objetos de forma uniforme: Manipular produtos e categorias com a mesma interface, simplificando o código.
- Flexibilidade e escalabilidade: Adicionar novos tipos de itens ao catálogo sem modificar o código existente.
- Go: Linguagem de programação principal.
- Arquitetura Hexagonal: Organização do projeto em camadas para melhor modularidade e testabilidade.
|____README.md
|____.gitignore
|____cmd
| |____main.go
|____go.mod
|____internal
| |____service
| | |____catalogo.go
| |____domain
| | |____item_catalogo.go
| | |____categoria.go
| | |____produto.go
- Composite: Padrão de projeto estrutural que permite compor objetos em estruturas de árvore e tratar objetos individuais e composições de forma uniforme.
- Polimorfismo: Capacidade de um objeto assumir diferentes formas, permitindo que objetos de diferentes tipos sejam tratados como se fossem do mesmo tipo.
- Interface ItemCatalogo: Define o contrato que todos os componentes do catálogo (produtos e categorias) devem seguir.
- Clone o repositório:
git clone https://github.com/br4tech/go-composite-example
- Instale as dependências:
go mod download
- Execute o programa:
go run cmd/main.go
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests.