Repositórios, Factories e algumas coisas mais DDD

Pessoal,

Comecei agora meus estudos sobre Domain Driven Design, e algumas coisas não ficaram claras pra mim. Certo que ainda não terminei de ler o livro, mas de qualquer forma vou postar algumas questões.

  1. Qual o real objetivo de Factories ? Se eu tenho um objeto que não é um Root de um Aggregate, qual seria a real função de uma factory ? No meu entendimento eu só criaria uma Factory para criar Entities complexos, com vários relacionamentos e de difícil criação. Mas na maioria dos casos, não consigo visualizar um objeto assim.

  2. Os repositorios devem pedir a uma factory(quando ela existir), para criar as instâncias dos Entities necessários ? No caso de não utilizar um framework de persistência, os DAOs poderiam fazer o papel dos repositórios ?

  3. Pelo que entendi, a dependência entre os Entities e os repositórios, se dão somente no sentido contrário, ex:
    RepositorioDeNotasFiscais ---------------------------&gt NotaFiscal.

Neste caso, como implementar o método NotaFiscal.ObterTotalDaNota, assumindo que este método percorra minha coleção de ItensDeNotaFiscal para fazer o Cálculo ? Estou perguntando isto pq, eu teria que, ao pedir para o meu Repositório.obterNotaFiscal (1532), já carregar automaticamente todos os seus itens, este entendimento é correto ?

Mais uma dúvida, se os objetos de domínio não conhecem seus Repositórios, como implementar um Lazy Load ?

Pessoal desculpem o tamanho do post, mas é que realmente estou meio perdido, se meu entendimento sobre os temas acima estiver incorreto, por favor me falem.

Obrigado,

Guto Costa