Diskussion:Value Object

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 3 Jahren von Sebastian.Dietrich in Abschnitt Code
Zur Navigation springen Zur Suche springen

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)Beantworten

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)Beantworten

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)Beantworten

erledigt --Dab0015 (Diskussion) 16:50, 28. Mär. 2016 (CEST)Beantworten
hab ein paar Kleinigkeiten ausgebessert, die das Beispiel erst zu einem richtigen ValueObject gemacht haben. --Sebastian.Dietrich 23:54, 29. Mär. 2016 (CEST)Beantworten

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:

Es sollte vmtl. ein klärender Abschnitt eingefügt werden. --Dab0015 (Diskussion) 09:00, 4. Sep. 2015 (CEST)Beantworten

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)Beantworten
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)Beantworten
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)Beantworten

Einzelnachweise

[Quelltext bearbeiten]
  1. Adam Bien: J2EE Patterns - Entwurfsmuster für die J2EE. Addison-Wesley Verlag, München 2002, ISBN 3-8273-1903-X, S. 85.
  2. 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)Beantworten

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)Beantworten