Учитывая инкапсуляцию объекта, должны ли получатели возвращать неизменное свойство?
Когда получатель возвращает свойство, такое как возвращениеList
из других связанных объектов должен ли этот список и его объекты быть неизменными, чтобы предотвратить код за пределами класса, изменяя состояние этих объектов, без ведома основного родительского объекта?
Например, еслиContact
объект, имеетgetDetails
геттер, который возвращаетList
изContactDetails
объекты, затем любой код, вызывающий этот геттер:
ContactDetail
objects from that list without the Contact
object knowing of it.
can change each ContactDetail
object without the Contact
object knowing of it.
Так что же нам здесь делать? Должны ли мы просто доверять вызывающему коду и возвращать легко изменяемые объекты или идти сложным путем и создавать неизменяемый класс для каждого изменяемого класса?