Considere que temos uma classe Produto com os seguintes atributos:
-
long id
-
String codigoEan //código de barras
-
String descricao
-
String marca
-
String modelo
-
double preco
-
LocalDate dataCadastro
-
LocalDate dataUltimaAtualizacao
-
int estoque
-
String categoria
-
String urlFoto
A classe possui os seguintes requisitos:
-
Os atributos em negrito são obrigatórios.
-
Não pode ser informado um modelo se não for informada a marca.
-
O preço deve ser maior que zero.
-
A data de cadastro não pode ser alterada e deve ser definida por padrão com a data atual.
-
A data da última atualização não pode ser anterior a data de cadastro.
-
O estoque padrão deve ser zero e não pode ser atribuído valor negativo.
-
Nenhum dos atributos String pode ser null.
Responda
-
Que padrão de projeto pode ser utilizado para tornar mais fácil e claro o processo de instanciação de tal classe, uma vez que há dependências entre diferentes atributos, atributos obrigatórios e outros não? Implemente tal padrão para esta classe.
Implemente o projeto e envie link para repositório no GitHub, onde o README deve conter as respostas.