Olá pessoal,
Inicialmente, sou novo nesse fórum e na parte de arquitetura. Ainda tenho MUITO o que estudar, e vou fazê-lo. Ademais, gostaria de pedir que caso eu fale alguma boa abobrinha, me perdoem pois sou realmente novo na parte de arquitetura.
Mas bem, eu estava pensando aqui e vi que na aplicação nós temos muitos POJOs, muitos DTOs, e todos eles com vários getters e setters. E bem, eu entendo o pojo como sendo apenas o repositório de dados da coisa toda, logo, nenhum Getter/Setter na minha opinião deve conter lógica alguma, nem uma conversão sequer. E bem, eu estava pensando em fazer algo mais ou menos assim:
Pojo: Student.java
package xyz;
public class Student {
private String studentName;
private String studentGrade;
public Student(String studentName, String studentGrade) {
this.studentName = studentName;
this.studentGrade = studentGrade;
}
}
DataExtractor: StudentExtractor
package xyz.extractor;
public class StudentExtractor{
//método básico de getInstance();
public String getStudentName(Student student){
//Por reflection, muda a permissão do atributo do objeto
//e assim consegue retornar o resultado como quiser, ex:
Student readableStudent = Utils.unlockObject(student);
return student.studentName + "teste";
}
}
Nesse caso, eu teria getters e setters em apenas um objeto, separado, não pelas instâncias dos objetos, assim como o meu simples POJO seria Lock e essa classe de Extractor, por ex, não seria acessível à todos os commiters do projeto, por exemplo. O POJO serviria apenas como depósito mesmo de dados, nenhuma lógica e nem getter e setter nessa história.
Obviamente teria como trabalhar melhor essa classe de Extractor, criando uma superclasse ou até mesmo um abstract.
O que me preocupa aí talvez é o tempo que a JVM levaria pra converter a permissão do atributo de private p/ public.
Faz sentido ou é loucura minha mesmo? rs. O que vocês acham?
Obrigado!