MVC - Model!?

Mik3e

Erfahrenes Mitglied
Hi zusammen,

Habe mir gerade anhand einiger Tuts ein kleines MVC gestrikt. Ist sehr schlank, läuft aber 1A.

Nachdem ich mich erst seit ein paar Tagen intensiver mit MVC Patterns beschäftige:
Was hat es mit den verdammten Models auf sich? Ich habe gelesen und gelesen und überall stand was anderes.

Ich habe es so verstanden, dass in den Models eigentlich die Abfragen externen Datenquellen gekapselt werden.

Hier ein Verständnisbeispiel (nach meiner Methode) anhand eines klassischen User-Logins:

Controller: User -> Methode: Login
Controller prüft die vom User eingegebenen Daten und übergibt Username & Passwort an das Model.

Model: User -> getLogin
Prüft Username und Passwort gegen die Datenbank und retourniert (in diesem Fall) true / false. Je nach Ergebnis bringt der Controller dann eine Fehlermeldung (View) oder führt das Login aus.

Soviel mal zu meinem Verständnis. Aber ich habe auch schon anderswo gelesen, dass die Entwickler die Grenzen zwischen Controller / Model sehr aufweichen und teilweise gar keine Models verwenden sondern die Abfragen direkt in den Controller integrieren.

Würde mich freuen, wenn sich hier jemand findet der auch auf die MVC Pattern setzt und mir mal seine Erfahrung sagen kann.

Danke & Ciao,
Mike
 
  • Gefällt mir
Reaktionen: mAu
Ich würde es grundsätzlich trennen.
Es ist beides für sich übersichtlicher!
Es kann das eine verändert werden ohne das andere zu kontaktieren.
Es heißt Ja MVC und nicht VC.
 
Wikipedia habe ich selbstverständlich schon gelesen:
Modell (model) [Bearbeiten]

Das Modell enthält die darzustellenden Daten und ggf. (abhängig von der Implementation des MVC-Patterns) auch die Geschäftslogik. Da das MVC-Pattern in verschiedenen Programmiersprachen unterschiedlich realisiert werden muss, trifft das MVC-Architekturmuster keine detaillierte Aussage über die Positionierung der Geschäftslogik innerhalb der MVC-Klassen. Diese kann je nach Anwendungsfall besser im Controller aufgehoben sein oder besser in das Modell verlagert werden. In der Praxis finden sich unterschiedliche MVC-Frameworks: Einige schreiben strikt vor, wohin die Geschäftslogik gehört, andere überlassen diese Entscheidung dem Softwarearchitekten.
Das Modell ist von Präsentation und Steuerung unabhängig. Änderungen an relevanten Daten im Modell werden durch das Entwurfsmuster „Beobachter“ bekannt gemacht.
quelle: wikipedia.de

aber ehrlich gesagt verstehe ich das nicht, kann jemand vielleicht mal mit eigenen Worten erklären was das model genau macht? am besten auch das view und der controller, danke.
 
Interessiere mich nun auch schon eine Weile für das MVC-Pattern. Wie es funktionieren soll weiß ich, leider hapert es an der Umsetzung.
Hat jemand ein kleines Beispiel wie sowas aussehen könnte? Finde leider nur Tutoriale im Zusammenhan mit XML :(
 
So wie ich die MVC-Architektur verstanden hab ist das Model sowas wie das Arbeitstier und der Controller eine Verbindung zwischen Model und View. Außerdem sind im Model die daten gespeichert damit alle andern Objekte auf die gleichen zentral gelagerten Daten zugreifen können.

Um das Beispiel mit dem Login wieder aufzufassen wird der Login im Controller gestartet.

Der Controller gibt den Benutzer und das Passwort zum Model.
Controller --> Model
Das Model prüft die Daten und gibt dann entweder die antwort das was nicht stimmt oder das alles passt.
Model --> Controller
Abängig von der Antwort Steuert der Controller dann wieder die View und ruft entweder eine Fehlermeldung oder die Arbeitsfläche (oder was auch immer nach dem Login kommen soll) auf.
Controller --> View

Meiner Erfahrung nach werden dabei auch gerne mehrere Views benutzt womit das System dann wirklich seine Vorteile bekommt und es enorm erleichtert wird verschiedene Objekte auf der Oberfläche zu "synchronisieren".
 
Also könnte ich theoretisch meine Datenbank-Klasse, als Model verwenden? Um sehr mehr ich davon lese, um so mehr verwirrt mich das. Ich sehe auch keinen direkten Vorteil, da ich eh fast alles in Klassen schreibe.
Vielleicht nutze ich schon ein MVC und weiß es nur nicht ^^
 
Ein typisches Beispiel für die Nutzung des MVC-Entwurfmusters in einer Desktop-Anwendung: eine Tabellenkalkulation.
Bei einer Tabellenkalkulation entsprechen die Daten in der Tabelle dem Model. Die Darstellung der Daten als Tabelle ist dabei bereits selbst ein View, also eine Darstellungsform der Daten. Wenn die Daten zusätzlich als Diagramm dargestellt werden können, beispielsweise ein Balken- oder Tortendiagramm, wären dies weitere Views. Alle Views registrieren sich dabei beim Model als Observer. Wenn nun die Daten in einem der Views verändert werden, teilen sie dies dem Model mit, das wiederum allen registrierten Views die Nachricht übermittelt, dass sich die Daten geändert haben, um die aktualisierten Daten vom Model anzufordern und sich selbst zu aktualisieren.
Der Controller fungiert dabei als Schnittstelle für Benutzereingaben.

Um das Ganze auf das Login-Beispiel zu übertragen:
  • Model?Das Objekt Benutzer oder Benutzerverwaltung.
  • View?Login-Formular, Login-Statusmeldungen (Login erfolgreich, Login fehlgeschlagen, etc.)
  • Controller?Anwendungslogik, die die Benutzereingaben prüft und dementsprechend reagiert.
Eine Datenbankklasse ist in diesem Entwurfsmuster nicht vorgesehen sondern wäre ein Helfer der Benutzer- oder Benutzerverwaltungsklasse.
 
Zurück