Mit Blick auf DDD, abstrahieren wir die Datenbank in die verschiedenen Modelle, auf denen wir arbeiten, und betrachten es als ein Repository, in dem unsere Modelle leben. Dann fügen wir die Datenebenen und die Service/Business-Schichten darüber hinzu. Meine Frage ist, ob wir durch den Aufbau von Fettmodellen Ineffizienzen bei der Datenübertragung schaffen.Fettdomänenmodelle => Ineffizient?
Zum Beispiel sagen wir haben System, das eine Rechnung für einen Kunden auf dem Bildschirm anzeigt. Denken an es in Bezug auf die OOP, würden wir wahrscheinlich mit einem Objekt am Ende, die ein wenig wie folgt aussieht:
class Invoice {
Customer _customer;
OrderItems _orderitems;
ShippingInfo _shippingInfo;
}
class Customer {
string name;
int customerID;
Address customerAddress;
AccountingInfo accountingInfo;
ShoppingHistory customerHistory;
}
(for the sake of the question/argument,
let's say it was determined that the customer class had to
implement AccountingInfo and ShoppingHistory)
Wenn die Rechnung ausschließlich Bedarf an den Kundennamen drucken, warum sollten wir alle tragen anderes Gepäck damit? Bei der Verwendung des Repository-Ansatzes scheinen wir diese komplexen Domänenobjekte zu erstellen, die all diese Ressourcen benötigen (CPU, Speicher, komplexe Query-Joins usw.) UND sie dann über die Röhren an den Client übertragen.
Wenn Sie der Rechnungsklasse einfach eine customerName-Eigenschaft hinzufügen, werden Sie sich von Abstraktionen lösen und es scheint eine schreckliche Praxis zu sein. Auf der dritten Seite scheint die Hälfte des Füllens eines Objekts wie dem Kunden eine sehr schlechte Idee zu sein, da Sie am Ende mehrere Versionen desselben Objekts erstellen könnten (zB eines mit einer Adresse, aber keiner ShoppingHistory und eines mit AccountingInfo, aber nein Adresse, usw., usw.). Was vermisse ich oder verstehe ich nicht?
Guter Punkt. Ich glaube, ich habe das lazy loading>.
MunkiPhD