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