Padrão de projetos para validar um objeto e suas propriedades

Boa tarde, tenho o seguinte problema: tenho um objeto que não posso modificar e preciso validar uma série de fatores nele. Em dado momento tenho que validar umas coisas em outro outras. Sei que posso usar o Strategy para seguir estratégias de validação diferentes, mas gostaria de saber se tem um padrão que se encaixe melhor neste problema:

  • validar as propriedades de um objeto (a classe não pode ser alterada)

E por que o strategy não serve?

1 curtida

Algum impedimento pra criar uma classe separada que valide o que quer?

1 curtida

Para ser sincero, ainda não vejo justificativa para usar algum padrão de projeto. O que te impede de usar Validador1, Validador2, etc. para as diferentes situações ?

1 curtida

Olá Darlan,

em todos os tutoriais que li o padrão não aplicava (encaixava) tão bem no problema, decidi não usa-lo por isto.

Encontrei este material que me atendeu bem: https://medium.com/@jplanes/lambda-validations-with-java-8-86aa8143bd9f

Fala javaflex,
Sem problemas, inclusive o material usado cria algumas (https://medium.com/@jplanes/lambda-validations-with-java-8-86aa8143bd9f), de todo modo queria um modelo que fosse preparado para o problema.

Fala rmendes,

Minha procura era por uma solução apropriada para o problema, um padrão de projeto que e não conhece poderia me ajudar a ter uma solução boa. De todo modo cheguei neste material (https://medium.com/@jplanes/lambda-validations-with-java-8-86aa8143bd9f)

Há alguns anos encontrei um material de um tal de Dr Heinz Kabutz, ele falava sobre o uso do padrão Strategy para a implementação de validações de regra de negócios, ele chegou num padrão que ele chamou de Specification.

Com base no material dele, eu cheguei a criar um pequeno framework para implementar repositórios de regras de negócio (ou validações) reaproveitáveis.
Ele foi implementado na época do Java 5, então não há uso de lâmbda nem streams.

Eu tenho o seguinte repositório no GitHub: https://github.com/staroski/rules

Os fontes podem não ser tão legíveis assim, então recomendo que dê uma olhada nos JavaDocs: http://staroski.github.io/rules/index.html?br/com/staroski/rules/package-summary.html

Pode ser que atenda sua necessidade.

1 curtida

No caso do Java seria usar bean validation, mas como voce nao pode alterar a classe, entao independente de padrões de projeto já vai soar esquisito perante a maioria. Relaxa que já está numa situação fora do comum. Nessa sua situação engessada criaria classes de validação, sem precisar depender de soluções de terceiros pra isso. Muitas vezes o feijão com arroz é mais garantido e compreensível por todos do que seguir algo sofisticado pouco usado, por mais que leve o selo de um “padrao”.

1 curtida