考虑对象封装,getters 是否应该返回不可变属性?
当 getter 返回一个属性(例如返回其他相关对象的 a)时,该列表及其对象是否应该不可变,以防止类外部的代码在主父对象不知道的情况下更改这些对象的状态?List
例如,如果一个对象有一个 getter,它返回一个对象,那么调用该 getter 的任何代码:Contact
getDetails
List
ContactDetails
- 可以在对象不知道的情况下从该列表中删除对象。
ContactDetail
Contact
- 可以在对象不知道的情况下更改每个对象。
ContactDetail
Contact
那么,我们应该怎么做呢?我们应该只信任调用代码并返回容易可变的对象,还是走硬路,为每个可变类创建一个不可变类?