Construindo objetos grandes e imutáveis sem usar construtores com longas listas de parâmetros

Eu tenho alguns objetos grandes (mais de 3 campos) que podem e devem ser imutáveis. Toda vez que encontro esse caso, costumo criar abominações de construtores com longas listas de parâmetros. Não parece certo, é difícil de usar e a legibilidade sofre.

É ainda pior se os campos forem algum tipo de coleção, como listas. Um simplesaddSibling(S s) facilitaria muito a criação de objetos, mas tornaria o objeto mutável.

O que vocês usam nesses casos? Estou no Scala e Java, mas acho que o problema é independente da linguagem, desde que a linguagem seja orientada a objetos.

Soluções em que posso pensar:

"Abominações de construtores com longas listas de parâmetros"O Padrão do Construtor

Obrigado pela sua contribuição!

questionAnswers(9)

yourAnswerToTheQuestion