Teniendo en cuenta la encapsulación de objetos, ¿deberían los operadores devolver una propiedad inmutable?

Cuando un captador devuelve una propiedad, como devolver unList de otros objetos relacionados, ¿deberían esa lista y sus objetos ser inmutables para evitar el código fuera de la clase, cambiando el estado de esos objetos, sin que lo sepa el objeto principal?

Por ejemplo si unContact objeto, tiene ungetDetails getter, que devuelve unList deContactDetails objetos, entonces cualquier código que llame a ese getter:

puede eliminarContactDetail objetos de esa lista sin elContact Objeto de saberlo.puede cambiar cadaContactDetail objeto sin elContact Objeto de saberlo.

Entonces, ¿qué debemos hacer aquí? ¿Deberíamos simplemente confiar en el código de llamada y devolver objetos fácilmente mutables, o ir por el camino difícil y hacer una clase inmutable para cada clase mutable?

Respuestas a la pregunta(11)

Su respuesta a la pregunta