Tenho algumas telas de pesquisa com uma quantidade razoavel de parametros (10-20).
Qual a melhor forma de passar esses parâmetros entre a camada de apresentação e a camada de negócios?
Pensei em 3 formas:
1) Passar todos um a um, na assinatura do método.
Ex: public pesquisaAlgumaCoisa(int arg1, String arg2, double arg3…) {…} - Vantagem: type-safe
- Desvantagem: como são muitos parametros, a visualizacão do metodo fica complicada; necessario alterar a assinatura qdo os parametros forem alterados;
2) Passar todos os parâmetros dentro de um Map<Object,Object>
Ex: public pesquisaAlgumaCoisa(Map<Object,Object> mapParametros) {…}
- Vantagem: a assinatura do metodo fica simples e não sera necessario alterar a assinatura do metodo quando for adicionar novos parametros
- Desvantagem: não eh type-safe
3) Criar uma classe “DTO” para setar os parâmetros e passar uma instância dessa classe como argumento.
Ex: public pesquisaAlgumaCoisa(DtoConsulta dtoParametrosConsulta) {…}
- Vantagem: a assinatura do metodo fica simples e não sera necessario alterar a assinatura do metodo quando for adicionar novos parametros; type-safe;
- Desvantagem: Tendencia a ter varios DTOs
Enfim,
nao cheguei ainda a uma conclusao qual a melhor forma, por isso gostaria de saber como vcs fazem.
Valeu