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:

entfernen könnenContactDetail 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?

Antworten auf die Frage(11)

Ihre Antwort auf die Frage