CW10: Shared Coordinate?

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

CW10: Shared Coordinate?
Hallo beisammen,

hat jemand bei der heutigen Aufgabe verstanden, wie genau das “shared” implementiert werden soll? Immutable & Co ist klar.
Die einzige Option die mir einfällt wäre hier ein *Coordinate.ZERO, das überall identisch ist, ansonsten sehe ich keine Anwendung.


Ich glaube (!), es geht um Folgendes: Wenn Du zwei Mal eine Koordinate z.B. an der Stelle (10, 20, 30) erstellst, dann sollen keine zwei Objekte entstehen, sondern nur eines. Nur wenn du eine Koordinate an (11, 20, 30) erstellst, dann soll ein neues Objekt zurückgegeben werden. Es soll also nicht möglich sein, dass gleichzeitig zwei Objekte existieren, die dieselben Attribute haben. Stattdessen sollen in diesem Fall immer die entsprechenden Referenzen auf die bereits existierenden Objekte zurückgegeben werden.


Ich verstehe, dass es die Option gibt, ich sehe aber wenig Nutzen.
Für diese Wiederverwendung brauchen wir dann ja entweder ein Set oder eine Map. Ein Set würde trotzdem jedes Mal eine Instanz erzeugen und nur auf Duplikate prüfen, eine Map beinhaltet als Schlüssel effektiv identische Informationen wie das Objekt selbst.
Beide Fälle scheinen mir bei so einem einfachen Objekt nicht viel Gewinn zu bringen.


Hi,

die Wiederverwendung von bereits erstellen Value-Objects ist ein wichtiger Aspekt von Value-Objects.
D. h. soll, wie von creative_name korrekt angenommen, bei einer weiteren Erstellung derselben Koordinate (11, 20, 30) kein neues Objekt angelegt werden, sondern die bereits existierende Koordinate (11, 20, 30) zurückgegeben werden.
Es existiert also nur ein Koordinaten-Werteobjekt welches (11, 20, 30) repräsentiert.

Uns ist bewusst, dass eine Wiederverwendung von Coordinate-Objekten, durch den großen Wertebereich, “nicht effizient” ist.
Dennoch soll dieser wichtiger Aspekt im Rahmen der Lehre vermittelt und implementiert werden.

1 „Gefällt mir“