Utilidade de objetos imutáveis ​​quando o estado de um programa muda constantemente

Eu sei que objetos imutáveis ​​sempre têm o mesmo estado, o estado em que eles são realmente criados. Seus invariantes são estabelecidos pelo construtor e desde que seu estado não muda após a construção, esses invariantes sempre se mantêm bem e é por isso que eles são seguros para publicar em um ambiente multi thread. Tudo bem, mas como vivemos em um mundo dinâmico, onde o estado do programa muda continuamente, que benefícios esses objetos nos proporcionam se construímos o estado de nosso programa através de objetos imutáveis?

questionAnswers(4)

yourAnswerToTheQuestion