Design (instruções) de classes que contêm coleções de outras classes

Como projetar classes envolvendo coleções de outras classes?

Exemplo Geral:

A Área de trabalho contém o número deProjetos .
A Projeto contém grande número deRecursos .
CadaRecurso pode conter grande número dearquivos.

Portanto, aqui as classes identificadas podem ser Espaço de Trabalho, Projeto, Recurso e Arquivo. O espaço de trabalho terá uma lista de Project.Project terá uma lista de recursos e o recurso terá uma lista de arquivos. É claro que cada classe tem suas configurações relacionadas.

Agora as perguntas básicas são:
a) Quem cria e adiciona uma classe a uma coleção específica? Outra classe ou a classe que contém a coleção?
b) Também como acompanhar uma coleção específica e como armazená-la?
c) Quem audita as alterações em uma coleção específica?
d) Quais são os diferentes padrões de design que podem ser aplicados em tais situações?

Basicamente, quero reduzir o acoplamento entre as diferentes classes.

Obrigado a todos

questionAnswers(3)

yourAnswerToTheQuestion