11.1 – Um Modelo de Pagamentos com Java 8

Neste trecho, o livro apresenta um exemplo prático de e-commerce para demonstrar o uso da nova API de datas (java.time) e outras boas práticas com Java 8. A ideia é simular uma loja digital que vende arquivos como músicas, vídeos e imagens.

A estrutura do modelo é simples, mas permite aplicar os conceitos aprendidos:

🛍️ Classes do modelo

Product – Produto digital com nome, caminho do arquivo e preço
Customer – Cliente da loja com apenas o nome
Payment – Pagamento feito por um cliente, com data e produtos comprados
👥 Criando clientes
🎧 Criando produtos digitais
💳 Criando pagamentos com java.time

📝 Observações

  • O código usa a nova API java.time (LocalDateTime, DateTimeFormatter) para tratar e formatar datas de forma clara e fluente.
  • O uso de Collections.unmodifiableList garante que a lista de produtos em um pagamento não seja alterada depois de criada.
  • A modelagem é propositalmente simples, com espaço para expansão (por exemplo, armazenar os pagamentos no cliente).
  • O uso de Path representa o caminho do arquivo no disco ou servidor local, podendo ser facilmente substituído por URL se necessário.

O que essa classe faz:
Define três classes de domínio: Product, Customer, Payment.
Cria exemplos de clientes e produtos.
Cria pagamentos associando clientes aos produtos em datas distintas.
Imprime as informações de pagamento no console.