Controle em struts 2 > Camada de dominio

Bom como é a primeira vez que escrevo aqui, gostaria de parabenizar todos sem exceção que frequentam o GUJ pelo conteudo das informações postadas e pela grande ajuda que veem me dando ao longo da minha curta carreira em desenvolvimento Java.

A duvida que tenho, resumidamente, é a seguinte:

Na camada de dominio, eu normalmente crio interfaces de Servicos, por exemplo, ItemCustoService, onde eu tenho n metodos para realizar todas as funcionalidades referente ao caso de uso correspondente à Itens de Custo. ex:

public interface ItemCustoService{
salvaItemCusto(…);
atualizaItemCusto(…);

}

nessa classe eu tenho disponiveis outros servicos (persitencia, envio de email, auditoria etc)…

Logicamente eu tenho uma ou mais implementações para esta classe. A minha duvida é : quais os argumentos que coloco nesse metodos? voces devem estar perguntando, que bicho estupido, mas eu ainda nao consegui identificar se é melhor eu passar como argumento um ojjeto d otipo ItemCusto, ou passo n argumentos representando os atributos do meu objeto como por exemplo, id, nome, tipo, etc…

estou fazendo essa pergunta porque o struts 2 me da a possibilidade de colocar nas classes controle os objetos de negocio (ItemCusto por exmplo) como um field da classe.
vale a pena eu “descontruir” o objeto de negocio e passar field por field para a camada de negocio?
O q voces acham?

Ola!

utilize a sobrecarga.

crie um método com um objeto como argumento e crie outro com as caracteristicas separadas.

Se vc for assinante da javamagazine. la na devmedia tem um curso online sobre Struts 2 bacana que mostra como utilizar os fields do Struts.

caso nao seja assinante tente procurar em www.roseindia.net

eu pensei em sobre caraga, mas nao seria criar uma outra classe que encapsulasse esta de servico oferecendo outros metodos?
como design não seria melhor?

depende do tamanho da sua aplicação!

use as Actions somente para interligar com a camada de modelo.

caso o seja um tanto complexo e grande. crie a camada de serviço. Ela armazenam funcionalidades do sistema em geral.

Dê uma lida sobre Façade, Service Layer e, principalmente, Domain Model.