2010-02-12 6 views
6

Ist es für einen DTO jemals akzeptabel, Instanzmethoden zu verwenden, die abgeleitete Werte basierend auf den Daten des DTO zurückgeben? Oder sollten DTOs reine Datencontainer ohne zusätzliche Methoden sein (andere als Getter/Setter)?Kann ein DTO Instanzmethoden haben, die abgeleitete Werte zurückgeben?

Der Purist in mir sagt, dass es für Business-Logik viel zu einfach ist, in solche Methoden zu kriechen. Wenn (zum Beispiel) ein DTO über Anwendungsschichten gemeinsam genutzt wird, gibt es möglicherweise ein Argument dafür, dass solche Methoden auf dem DTO vorhanden sind.

Was halten Sie davon? Gibt es Situationen, in denen es akzeptabel ist, oder sollten solche Dinge vermieden werden? Und warum/warum nicht?

+0

gute Frage, ich war gerade dabei zu fragen! – andy

Antwort

6

DTOs sollten kein Verhalten haben, sie sind nur Container zum Transport von Daten über Prozessgrenzen und sollten nur aus Setter/Getter bestehen.

Es sollte um jeden Preis vermieden werden, andernfalls würde es als falsche Anwendung des DTO-Musters ausgelegt werden.

+2

Die meisten Best Practices-Bücher, die ich mir im letzten Jahr angesehen habe, haben vom DTO abgeraten. – Woot4Moo

+0

Die Frage war speziell über das DTO-Muster nicht, ob es verwendet werden soll oder nicht. Das Problem mit dem DTO ist, dass es in vielen Situationen falsch angewendet wird, z. wo es keine Prozessgrenze gibt! Das war der Grund, warum es darum ging, Daten aus einem Remote-Prozess zu sammeln, um teure Rundreisen zu sparen. – David

+0

Sollte ich @override compareTo in einem DTO verwenden oder wird nicht empfohlen? Ist es besser, einen Wrapper zu diesem Zweck zu verwenden? –

Verwandte Themen