trekkerbr:
Bom dia pessoal !
Segue uma dúvida conceitual.
Estou utilizando Struts 2 Framework mas acredito que isto não interfere na pergunta.
Posso colocar outros métodos (sem ser get e set) dentro de objetos POJO ?
Sei que o Java aceita isto. Mas é o correto ?
Por exemplo, tenho um classe chamada Atividade, qual esta no pacote br.com.meusistema.model.
Em determinado momento preciso verificar o estado de uma List que é um atributo desta classe e para isto criei um método verifica() dentro da mesma. Isto é correto? Ou já que trata-se de um objeto POJO, devo separar este método em uma classe auxiliar (ex: AtividadeUtil.verifica(Atividade);
Poder? Você pode. Você pode fazer o que quiser. Pode até fazer o seu POJO desenhar na tela uma manta vermelha com bolinhas amarelas.
É correto? Correto é. Você tem a liberdade de criar seu código onde bem entender.
Agora, a questão-mór é:
De acordo com os padrões comuns de desenvolvimento JAVA, é correto encapsular métodos em classes POJO?
Não, não é. Uma classe POJO (Plain Old Java Object) é simplesmente uma classe representativa de uma entidade, seja essa de um banco de dados ou de qualquer outro fornecedor de informações.
Portanto, seguindo os padrões de objetos POJO, eu criaria esse método
verifica() em uma classe de serviços (BI). Porque ela é a responsável por tratar as lógicas de negócio, lógicas de validação, verificação, entre outras. Portanto, eu faria do modo que você sugeriu no seu exemplo:
public class Atividade {
private long ID;
private String atividade;
public Atividade() { }
public Atividade(String atividade) { ... }
public Atividade(long ID, String atividade) { ... }
public Atividade(Atividade other) { ... }
// getters e setters omitidos.
}
public class AtividadeBI {
public AtividadeBI() { }
public bool verificarAtividadeNaColecao(List<Atividade> atividades, Atividade atividade) {
// retorna o resultado da sua lógica, separando essa responsabilidade do POJO.
}
}
Que tal?