Diskussion:Value Object
Relevanz
[Quelltext bearbeiten]Ich wage zu behaupten, dass es kaum eine Software gibt in der nicht auf dieses Entwurfsmuster (bewusst oder unbewusst) zurückgegriffen wird. Zum Spass: im Quellcode der Mediawiki Software (die Plattform der Wikipedia) findet sich die Klasse: TitleValue (TitleValue.php), die dieses Muster implementiert. [1] Es gibt sogar eine Diskussion der Entwickler inwieweit der Code Refactored werden soll um die Vorteile des Pattern zu nutzen: [2] --Dab0015 (Diskussion) 22:09, 31. Aug. 2015 (CEST)
- Ich wage zu behaupten, dass dieses Pattern in den meisten Fällen falsch umgesetzt wird. Aber egal wer von uns beiden was wagt, für den Artikel ists irrelevant... --Sebastian.Dietrich ✉ 23:10, 31. Aug. 2015 (CEST)
Beispiel
[Quelltext bearbeiten]Hi, was haltet ihr von diesem Beispiel? soll ich es einfügen? - * Beispiel Wertobjekt / Value Object (JAVA) --Dab0015 (Diskussion) 12:00, 3. Sep. 2015 (CEST)
- erledigt --Dab0015 (Diskussion) 16:50, 28. Mär. 2016 (CEST)
- hab ein paar Kleinigkeiten ausgebessert, die das Beispiel erst zu einem richtigen ValueObject gemacht haben. --Sebastian.Dietrich ✉ 23:54, 29. Mär. 2016 (CEST)
Value Object VS Data Transfer Object
[Quelltext bearbeiten]In einigen Büchern zu Patterns in Java wird VO Value Object synonym zum DTO Transferobjekt verwendet. Dies führt häufig zu Begriffsverwirrungen:
- http://www.oracle.com/technetwork/java/transferobject-139757.html
- Adam Bien J2EE Patterns - Entwurfsmuster für die J2EE[1]
Es sollte vmtl. ein klärender Abschnitt eingefügt werden. --Dab0015 (Diskussion) 09:00, 4. Sep. 2015 (CEST)
- DTO ist was ganz anderes als VO - in dem Oracle Artikel wird es aber tatsächlich in den Grafiken falsch geschrieben (das was dort ValueObject ist, sollte DTO heissen). Ein DTO muss auch nicht ein ValueObject sein (siehe auch die SetValue Methode in der Grafik im Artikel). --Sebastian.Dietrich ✉ 00:00, 30. Mär. 2016 (CEST)
- Schon klar, nur dass es sich leider nicht um einen einmaligen Fehler handelt sondern um einen generellen Namenskonflikt --> Quelle Patterns Kompakt:"In der JEE-Gemeinde wird Value Object synonym für Data Transfer Object (Abschn. 6.2) verwendet. Das führt zu einem schweren Namenskonflikt. Wir haben uns entschlossen, das Value Object wie Martin Fowler einzuführen (vgl. [Fowler])."[2] Daher kam ja die Idee für einen klärenden Kommentar, Gruß --Dab0015 (Diskussion) 00:09, 30. Mär. 2016 (CEST)
- Sorry - jetzt erst gesehen (hab gerade den Satz aus DTO entfernt) - ist mir wie gesagt neu. Das sind zwei total unterschiedliche Patterns und ich kann mir nicht erklären wie man das durcheinanderbringen kann. Aber wenn das explizit in dem Patterns Kompakt drinnen steht, dann nimm das als Referenz - bitte aber nicht verallgemeinern mit "oft" oder "wird so verwendet" - da das meiner Erfahrung nach nur Ausnahmen sein können. --Sebastian.Dietrich ✉ 00:13, 30. Mär. 2016 (CEST)
Einzelnachweise
[Quelltext bearbeiten]- ↑ Adam Bien: J2EE Patterns - Entwurfsmuster für die J2EE. Addison-Wesley Verlag, München 2002, ISBN 3-8273-1903-X, S. 85.
- ↑ Karl Eilebrecht, Gernot Starke: Patterns kompakt. 4. Auflage. Springer Vieweg Verlag, Berlin 2013, ISBN 978-3-642-34717-7, S. 197.
Code
[Quelltext bearbeiten]Der bisher vorhandene Code kompiliert nicht. Zum einen wird der Typ Integer mit BigDecimal verwechselt und außerdem wird versucht die equals-Methode mit einer Typabweichung zu überschreiben. Das stellt so nur eine Überladung dar und durch die @Override-Annotation wird es zu einem Compile-Fehler. Equals muss immer mit Object ausgeführt werden können. Deshalb habe ich den Code mal korrigiert.
(nicht signierter Beitrag von 2003:e9:d715:4b00:412c:27a0:ddda:a201 (Diskussion) 20:34, 28. Mär. 2019) Übertrag von Benutzer Diskussion:2003:E9:D715:4B00:412C:27A0:DDDA:A201 -- Toni (Diskussion) 00:56, 8. Jun. 2021 (CEST)
- Danke für die korrekten Änderungen. Brauchst aber nicht extra auf der Diskussionsseite erwähnen, deine Kommentare bei der Änderung reichen auch. --Sebastian.Dietrich ✉ 06:58, 8. Jun. 2021 (CEST)