Когда получатель возвращает свойство, например возвращение List других связанных объектов, должен ли этот список и его объекты быть неизменными, чтобы исключить код вне класса, изменяя состояние этих объектов, без основного родительского объекта зная?
Например, если объект Contact имеет getDetails getter, который возвращает List объектов ContactDetails, тогда любой код, вызывающий этот getter:
- может удалить объекты
ContactDetailиз этого списка без объектаContact, зная его. - может изменять каждый объект
ContactDetailбез объектаContact, зная его.
Итак, что нам здесь делать? Должны ли мы просто доверять вызывающему коду и возвращать легко изменяемые объекты или идти сложным путем и создавать неизменяемый класс для каждого изменяемого класса?