Arquitetura em camadas

Boa tarde, tenho um projeto em 3 camadas:

Business
Entity
DAO

Tenho uma dúvida quanto ao como acoplar objetos. Por exemplo, ao inserir Pedido chamaria o Business do Pedido que implementa as regras de negócios do pedido, não convém que classes de negócios do pedido implementem regras de negócios de outros objetos ( de item por exemplo ), seja chamando o outro business ou implementando o código na business de peido.

Como fazer esse acoplamento então, por exemplo para buscar um pedido.
Chamo a business do pedido, a própria business do pedido busca o item, ou teria que ter outra camada que pegaria pelo seu business do pedido e o item por seu Business com base no pedido já capturado?

O mesmo se aplica ao inserir.

Como fazer então?

Não existe receita de bolo.

Aqui eu tenho um exemplo de Rotas, Linhas e Pontos.

Uma Rota é formada por Pontos. E uma Linha é formada por Rotas (ida e volta, por ex.).

Ou seja:

1 Linha <-> 2 Rotas
1 Rota <-> N Pontos

Como a inclusão do dado é sempre da Rota (na entidade do meio), é pelo DAO de Rota que gero as inclusões/atualizações pelos DAOs de Linha e Ponto.

Obviamente existem acessos que não precisam passar pela Rota (ex: listar pontos, listar linhas, alterar atributos de Ponto).

[quote=Thiago Dantas]Boa tarde, tenho um projeto em 3 camadas:

Business
Entity
DAO

Tenho uma dúvida quanto ao como acoplar objetos. Por exemplo, ao inserir Pedido chamaria o Business do Pedido que implementa as regras de negócios do pedido, não convém que classes de negócios do pedido implementem regras de negócios de outros objetos ( de item por exemplo ), seja chamando o outro business ou implementando o código na business de peido.

Como fazer esse acoplamento então, por exemplo para buscar um pedido.
Chamo a business do pedido, a própria business do pedido busca o item, ou teria que ter outra camada que pegaria pelo seu business do pedido e o item por seu Business com base no pedido já capturado?

O mesmo se aplica ao inserir.

Como fazer então?[/quote]

Entity e Business não são camadas diferentes, é tudo negócio, domínio. :wink:

Em relação à dúvida, concordo com o andre_salvati.