Sonntag, 5. Juli 2009

Programmier-Patterns: MVC

MVC ist die Abkürzung für Model-View-Controller. Ich mache es am Beispiel eines Schachspiels.

Das Konzept beim MVC-Pattern ist es, eine Aufgabe in 3 abgetrennte Teile zu packen:

Das Model ist der Hauptteil des Programms. Das Model ist für die Funktionalität zuständig. Beim Beispiel Schach wären das:
  • die Figuren mit ihren Positionen und Zugmöglichkeiten.
  • das Spiel mit allen Figuren. Das Spiel hätte auch die Aufgabe, festzustellen, ob jemand gewonnen hat.
Bei einem Programm, das sauber nach MVC entworfen ist, wäre das Modell alleine schon genug, um ein Schachspiel zu "spielen", also den Verlauf von Anfang bis Ende nachstellen zu können.

Ein echtes Spiel ist damit aber noch nicht möglich, weil Ein- und Ausgabe, egal in welcher Weise, strikt aus dem Modell herausgehalten werden. Das ist Sache der View. Es gibt ein Paar Beispiele wie eine View aussehen könnte:
  • Kommandozeile: Die primitivste Form für eine View wäre Ein- und Ausgabe über die Eingabezeile. Obwohl das nicht grafisch ist, ist es immer noch die View, weil das Modell an sich keine Benutzerinteraktion enthält, auch wenn es nur über Text ist.
  • Webinterface: Natürlich gibt es auch die Möglichkeit, dass das Modell auf einem Server läuft, und der User seine Züge über eine Website angibt und auch das Ergebnis sieht.
  • GUI: Hier gibt es natürlich die verschiedensten Möglichkeiten: Eine Draufsicht auf ein Schachbrett sollte mit Swing nicht sehr schwer sein, ein 3D-Spielbrett erfordert dagegen natürlich mehr Aufwand.
Der dritte Teil, der Controller, ist am lockersten definiert. Der Controller ist die Verbindung, der Übersetzer, zwischen Model und View. Bei einem Webinterface wäre zum Beispiel der Controller dafür zuständig, die Requests des Clients in passender Form an das Model weiterzuleiten, und den Status des Models der View zu übergeben, in einer Form, die die View dann zu einer Seite verarbeiten kann.

Keine Kommentare:

Kommentar veröffentlichen