go-composite-example

module
v0.0.0-...-230535a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 23, 2024 License: Apache-2.0

README

🎨 Design Composite em Go: Construindo Catálogos Flexíveis com 🌳 Árvore Genealógica 👪

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.

🎯 Objetivo

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.

🚀 Tecnologias Utilizadas

  • Go: Linguagem de programação principal.
  • Arquitetura Hexagonal: Organização do projeto em camadas para melhor modularidade e testabilidade.

📂 Estrutura do Projeto

  |____README.md
  |____.gitignore
  |____cmd
  | |____main.go
  |____go.mod
  |____internal
  | |____service
  | | |____catalogo.go
  | |____domain
  | | |____item_catalogo.go
  | | |____categoria.go
  | | |____produto.go

💡 Conceitos-chave

  • 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.

🛠️ Como usar

  1. Clone o repositório:
      git clone https://github.com/br4tech/go-composite-example
    
  2. Instale as dependências:
      go mod download
    
  3. Execute o programa:
  go run cmd/main.go

🤝 Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests.

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL