Ich bin jetzt vielleicht blöd, aber wieso ist TPosition ein ValueObject?
Der deutsche Wikipedia Eintrag ist da möglicherweise nicht so klar wie die englische Beschreibung:
Zitat von
en.wikipedia.org:
In computer science, a value object is a small object that represents a simple entity whose equality is not based on identity: i.e. two value objects are equal when they have the same value, not necessarily being the same object.
Bei einer Position ist in aller Regel: (4,5,6) = (4,5,6) auch wenn das zwei unterschiedliche Instanzen/Entitäten sind. Wenn nun aber 2 Objekte in einem Koordinatensystem an derselben Position sind und eins davon sich ändert, weise ich ihm eine neue Position zu (auch, wenn sich nur X, Y oder Z geändert hat). Hätte ich möglicherweise Objekte dafür, ergäbe sich die Gefahr, dass es sich um dieselben Instanzen handelt, weil ich irgendwo geschrieben habe:
Delphi-Quellcode:
pos := TPosition.Create(4, 5, 6);
obj1.Pos := pos;
obj2.Pos := pos;
Angenommen ich habe nun noch Setter für X, Y, Z. Wenn ich nun
obj1.Pos.X := 7;
schreibe, ändert sich dann die Position von obj2 möglicherweise auch.