Ich stelle diese Frage, weil ich nach der Entwicklung einiger kleiner benutzerdefinierter CMS-Lösungen in einem Framework die Idee entwickelt habe, dass Modelle leicht durch ORMs ersetzt werden können, die das Validieren, Abrufen und Festlegen von Daten erleichtern, da dies alles ist, wofür sie benötigt werden .
Ich habe kürzlich eine Bestellung für eine komplexe benutzerdefinierte Client-Management-Lösung erhalten. Nachdem ich ein wenig nachgeforscht hatte, wie ich vorgehen sollte, fand ich
Folgendes : http://blog.astrumfutura.com/2008/12/the-m-in-mvc-why-models-are-misunderstood-and-unappreciated/
Now Die Idee ist nicht neu, da ich das über den MVC-Ansatz gelesen habe. Modelle handhaben die Geschäftslogik. Es fällt mir jedoch schwer, einen Ansatz zu planen, bei dem Models mit der Geschäftslogik umgehen und Klassen sind, die aufgrund der Art der Arbeit, an die ich mich gewöhnt habe, in sich abgeschlossen sind.
Bitte helfen Sie mir hier, indem Sie die Idee erklären und mich auf einige Beispiele, Artikel usw. Verweisen
quelle
Antworten:
Sie sollten mehr über Domain Driven Design lesen . Grundsätzlich versuchen Sie, die Anforderungen des Unternehmens in einem reinen Modell (in den meisten Objektmodellen) zu erfassen, das alle erforderlichen geschäftslogischen Aufgaben ausführen kann. Dieses Modell kann dann von einer Anwendungsschicht aus aufgerufen werden (z. B. der Ansicht oder dem Controller in MVC, in MVP rufen Sie es auf und passen es für die GUI in einem Presenter an). Das Modell sollte auch die Persistenz und andere technische Dinge so wenig wie möglich kennen.
Das Einkapseln der Geschäftslogik in ein solches Domänenmodell hat einige große Vorteile:
Ich empfehle Eric Evans Buch über Domain Driven Design zur weiteren Lektüre, da es Sie in die richtige Richtung weist und Ihnen einige gute Beispiele dafür gibt, wo welche Logik platziert werden soll. Ich wette, bis Sie es gelesen haben, wird ein großer Prozentsatz Ihrer Entitäten mehr als nur flache Daten enthalten .
Ich gehe davon aus, dass Sie sich in diesem Zusammenhang hauptsächlich auf Entitäten beziehen. Das Einfügen von Geschäftslogik / -verhalten in die Entitäten ist keine triviale Aufgabe. Sie sollten jedoch immer darüber nachdenken, was eine Entität ist und was eine Entität tut . Hat es einige Verantwortlichkeiten oder Verhaltensweisen? Manchmal ist es in Ordnung, flache Einheiten zu haben, wenn Verhaltensweisen oder Verantwortlichkeiten besser als Dienstleistungen ausgedrückt werden.
Angenommen, Sie haben ein Tier. Während seine Attribute flach in einer Datenbank gespeichert werden können, hat es auch ein gewisses Verhalten. Es muss essen. Aber ein Pflanzenfresser isst kein Fleisch, also müssen Sie sicherstellen, dass es sein Verhalten zeigt, wenn der Programmierer möchte, dass er Fleisch mit Gewalt konsumiert. Es kann sich bewegen und es kann sein eigenes einzigartiges Geräusch machen. Dies sind einige Dinge, die zum Beispiel in die Entität modelliert werden sollten. Sie würden sich sicher nicht auf Verfahrensdienste verlassen, um diese Tiere zum Fressen, Bewegen oder Lärm zu bringen.
Alle Beispiele sind jedoch flach ohne eine konkrete Geschäftsdomäne. Denken Sie also an Ihre Geschäftsdomäne und an ihre Entitäten, Verhaltensweisen und Verantwortlichkeiten. Eine andere Geschäftsdomäne kann Entitäten enthalten, die für einen Außenstehenden ähnlich aussehen, aber tatsächlich etwas völlig anderes sind oder ein völlig anderes Verhalten zeigen. Das Modell muss in erster Linie die Domäne seiner Benutzer so genau wie möglich darstellen.
quelle