Considerando o encapsulamento de objetos, os getters devem retornar uma propriedade imutável?
Quando um getter retorna uma propriedade, como retornar umList
de outros objetos relacionados, essa lista e seus objetos devem ser imutáveis para evitar código fora da classe, alterando o estado desses objetos, sem o conhecimento do objeto pai principal?
Por exemplo, se umContact
objeto, tem umgetDetails
getter, que retorna umList
doContactDetails
objetos, então qualquer código chamando esse getter:
ContactDetail
objetos dessa lista sem oContact
objeto sabendo disso.pode mudar cadaContactDetail
objeto sem oContact
objeto sabendo disso.Então, o que devemos fazer aqui? Devemos confiar apenas no código de chamada e retornar facilmente objetos mutáveis, ou ir pela pior maneira e fazer uma classe imutável para cada classe mutável?