Tenho uma dúvida quanto a possibilidade de utilização de interfaces para validação de dados na Arquitetura Clean.
Poderíamos encapsular a lógica de validação dentro de implementações de uma interface "Validacao" e chamá-la dentro do construtor da Entidade de domínio ou outra classe responsável pela criação da Entidade?
Por exemplo, suponha que tenhamos a seguinte interface:
public interface Validacao<T>{ public void validar(T dado); }
e dela tenho várias implementações que validam os campos da minha entidade, tomando como exemplo o usuário e os campos CPF, idade:
public class ValidaCpf implements Validacao<String> { @Override public void validar(String dado){ //lógica para validar CPF e Dígitos Verificadores } }
public class ValidaIdade implements Validacao<LocalDate> { @Override public void validar(LocalDate dado){ //lógica para validar idade } }
Caso seja possível, deveríamos instanciar cada Implementação individualmente ou existe alguma forma menos morosa de realizar?