Dies ist eine Frage, die ich vor einiger Zeit auf SO gestellt habe, aber hier wird sie vielleicht besser diskutiert ...
Wo ich arbeite, sind wir zu diesem Thema einige Male hin und her gegangen und haben nach einer Überprüfung der geistigen Gesundheit gesucht. Hier ist die Frage: Sollten Business-Objekte Datencontainer sein (eher DTOs ) oder sollten sie auch Logik enthalten, die einige Funktionen für dieses Objekt ausführen kann.
Beispiel - Nehmen Sie ein Kundenobjekt, das wahrscheinlich einige allgemeine Eigenschaften enthält (Name, ID usw.). Sollte dieses Kundenobjekt auch Funktionen enthalten (Speichern, Berechnen usw.)?
Eine Argumentation besagt, dass das Objekt von der Funktionalität (Prinzipal mit einer Verantwortlichkeit) getrennt und die Funktionalität in eine Business-Logik-Ebene oder ein Objekt eingefügt wird.
Die andere Argumentation besagt: Nein, wenn ich ein Kundenobjekt habe, möchte ich nur Customer.Save anrufen und fertig sein. Warum muss ich etwas über eine andere Klasse wissen, um einen Kunden zu retten, wenn ich das Objekt konsumiere?
Bei unseren letzten beiden Projekten wurden die Objekte von der Funktionalität getrennt, aber die Debatte wurde erneut über ein neues Projekt geführt.
Was macht mehr Sinn und warum?