2016-06-09 6 views
3

In MV * Mustern, was genau ist das Modell, das für "M" steht? Ist es ein POCO? Oder ist es eine Klasse, die Ihre gesamte sperrige und wiederverwendbare Geschäftslogik enthält?In MV * pattern, was genau ist das Modell?

Ich lese viel im Web (und SO), aber die Begriffe sind wirklich verwirrend. Manche sagen, das Modell sollte sperrig sein, was auf die gesamte wiederverwendbare Geschäftslogik hinweist. Einige sagen, dass es Ihr Datenmodell ist, das auf den POCO verweist, der eine Replik Ihrer Tabelle und ihrer Felder darstellt.

Wenn es POCO ist, dann wie es sperrig sein könnte und wo sollte Ihre Geschäftslogik gehen?

Ich habe MVC in einigen der Projekte implementiert, wo mein Modell kein POCO ist; Es enthält wiederverwendbare Geschäftslogik. Ich hoffe ich habe es richtig gemacht.

Antwort

4

Gemäß der Definition von MV * ist Model für das Verarbeiten der Geschäftslogik und das Verwalten von Daten zuständig. Abhängig von der Erfahrung des Entwicklers kann das Modell in verschiedenen Formen existieren. Zum Beispiel: Services + POCOs oder Services + Domain Models + Strategien oder sonst. Einige Entwickler ziehen es vor, alle Geschäftslogik innerhalb von Diensten zu platzieren, wobei sie dem Anemic Domain Model folgen. Andere bevorzugen es, die Logik im Domänenmodell so weit wie möglich beizubehalten und nur Dienste für die Logik einzuführen, die mehrere Domänenmodelle umfasst.

Ich hatte einige offene Gespräche mit PHP-Entwicklern und sie sagten MVC hat zwei "Varianten": Fat Controller-Thin-Modell und Fat Model-Thin-Controller, in denen die Fett Geschäftslogik. Aber ich sehe nicht, dass Fat Controller-Thin Model tatsächlich eine Variante ist, weil das Platzieren von Biz Logik im Controller Ihre Geschäftslogik weniger wiederverwendbar macht und gegen das Single Responsibility Prinzip.

+0

** Das Modell kann in verschiedenen Formen existieren. Zum Beispiel: Services + POCOs oder Services + Domain Models + Strategien oder sonst ** das löscht die meisten meiner Zweifel. –

+0

Also kann ich sagen mein Modell besteht aus BL + POCOs? –

+0

Ja kannst du :-) – Robo