Sollten Getter unter Berücksichtigung der Objektkapselung eine unveränderliche Eigenschaft zurückgeben?
Wenn ein Getter eine Eigenschaft zurückgibt, z. B. aList
Sollte diese Liste und die zugehörigen Objekte anderer verwandter Objekte unveränderlich sein, um zu verhindern, dass Code außerhalb der Klasse den Status dieser Objekte ändert, ohne dass das übergeordnete Hauptobjekt dies weiß?
Zum Beispiel, wenn aContact
Objekt hat einegetDetails
Getter, der a zurückgibtList
vonContactDetails
Objekte, dann jeder Code, der diesen Getter aufruft:
ContactDetail
Objekte aus dieser Liste ohne dieContact
Objekt wissen davon.kann jeweils ändernContactDetail
Objekt ohne dieContact
Objekt wissen davon.Also, was sollen wir hier tun? Sollten wir einfach dem aufrufenden Code vertrauen und leicht veränderliche Objekte zurückgeben, oder den harten Weg gehen und für jede veränderliche Klasse eine unveränderliche Klasse erstellen?