cmoscoso:
Desnecessário repetir mais uma vez de novo que não estou discutindo camada de domínio.
Vc não precisa discutir camada de dominio, mas eu precisei exemplificar a diferença da assinatura dos métodos
conforme a camada em que são usados.
String , Date, Number , Boolean tb são DTO. Apenas são DTO com um so valor. DTO é um padrão de responsabilidade e uso e não de implementação. Quando vc escreve:
criaUsuario(String nome, String pass, long perfilId);
Vc está usando 3 DTO com 1 valor cada um. Se vc escrever
Map map
map.put(“nome”,nome);
map.put(“pass”,pass);
map.put(“perfilId”,perfilId);
criaUsuario(Map map);
Vc está usando 1 DTO com 3 valores.
Se vc está seguindo o tema do topico e tentando responder à pergunta “Instanciação de Entity, classe de domínio, DDD Evans, onde é correto?” então vc deve saber que usar DTO, qualquer que seja, é contra a filosofia DDD. Já que a UI pode conhecer o dominio (através do model do MVC) use-se a entidade e pronto.
Mas mesma a entidade pode estar sendo usado como DTO. Tudo bem desde que não exista um objeto cuja unica responsabilidade é ser um DTO. Um entidade, por definição, tem mais responsabilidades do que apenas portar dados.
Eu estou partindo da ideia de que a UI está sobre um modelo MVC. Se não estiver , ou o sistema é muito simples e nem ha o que discutir, ou está mal feito. O M do MVC não pertence ao UI, pertence ao dominio. Ele é responsavel por intrepretar alterações no modelo e passar isso à UI e intrepretar alterações na UI e passar ao modelo. O M do MVC tem acesso total às regras do negocio e do dominio e é a peça inteligente do UI (o smart)
A View e o Controlo são apenas automações da UI que nada têm a ver com o dominio.