4 Stimmen

Woher kommt die Benutzereingabe in einer MVC-Architektur?

Ich würde gerne wissen, woher der Controller die Benutzereingaben bekommt (um das Modell damit zu füttern). Da die Eingabemedien stark mit dem Benutzer verbunden sind, sollte die Ansicht nicht den konkreten Weg kennen, um die Daten des Benutzers zu erhalten? Aber wie kann ich dann den Controller vom View trennen? Ist es möglich, beide völlig unabhängig voneinander zu machen, wie es ihre Zwecke nahelegen?

Exemple : Wenn ich eine Anwendung habe, die die Curses-Bibliothek für die Ansicht verwendet, bedeutet dies, dass sie nur über das Terminal zugänglich ist. Die Verwendung von Curses-Methoden zum Lesen von Benutzerdaten im Controller würde die Kapselung brechen, aber der Aufruf von Methoden in der Ansicht hätte nichts mit der Anzeige des Modells zu tun.

3voto

Mitch Wheat Punkte 287474

In MVC erhält der Controller seine Benutzereingaben von der View.

1voto

Nick Meyer Punkte 37405

Erwägen Sie, die Kommunikation zwischen View und Controller über die Beobachter-Muster . Der Controller registriert sich als Beobachter bei der Ansicht. Wenn der Benutzer Daten in die View eingibt und die Eingabetaste drückt, interpretiert die View die Daten und teilt ihren Beobachtern mit, dass Daten vorhanden sind. Der Controller kann dann die Daten von der View über eine öffentliche Methode abrufen.

1voto

Jack Ryan Punkte 8258

Ich glaube nicht, dass die Ansicht wirklich viel mit der Eingabe von Daten zu tun hat. Ich finde MVC viel einfacher zu visualisieren, wenn Sie den Benutzer als Kommunikation mit dem Controller direkt sehen. Ein Controller empfängt Daten vom Benutzer und sendet Views zurück. In vielen Systemen hat die View-Engine eine begrenzte Möglichkeit, sich selbst zu aktualisieren (z. B. zeigen Texteingaben an, was eingegeben wurde, bevor es an den Controller gesendet wird). In jeder MVC-Architektur können Sie jedoch jeden View durch jeden anderen View ersetzen, sofern beide die gleichen Daten verarbeiten können.

Zum Beispiel. Die Eingabe eines Benutzernamens kann auf jedem System erfolgen, das die Eingabe von Zeichenketten unterstützt. Der Controller akzeptiert eine Zeichenkette und kann daher in einer Webanwendung, einer Terminalanwendung oder einer GUI-Anwendung verwendet werden.

0voto

Jean Punkte 20911

Ich denke, die Ansicht sollte einen Rückruf auf dem Controller haben, um über Benutzereingaben zu senden. In der Web-Architektur ist der Rückruf durch die Fähigkeit, die Benutzereingabe zurück an den Server durch http-Anforderungen zu senden.

In Ihrem Fall sollte Ihre ncurse-Front wahrscheinlich eine Art Callback-Methode zur Controller-Komponente haben, um Benutzereingaben zurückzusenden.

0voto

Nun,

Ich werde versuchen, das für Sie zu präzisieren. Vage/abstrakte Antworten für Leute zu geben, die das Thema nicht beherrschen, ist nicht hilfreich.

MVC -> Model-View-Controler

Es gibt viele Implementierungen von MVC, ich kenne Ihren Fall nicht, aber ich werde Ihnen eine nennen.

Die gängigste MVC-Implementierung funktioniert wie folgt.

Ansicht <-> Kontrolleur <-> Modell

In einem Webszenario

Die Ansicht wäre Ihre HTML-Seiten und die Dateneingabe würde in einem Formular erfolgen.

<form action=/home/createuser method=post>
...code goes here...
</form>

Home wäre Ihr Controller (eine Klasse namens home), und createuser eine Methode in home.

public class Home extends Controller {

   public void createUser(Userform f){
      ...create user...
   }
}

Dieses Formular würde Daten als Parameter an die Methode übermitteln. Createuser würde sie verarbeitet, um mit dem Modell zu sprechen und später die Daten persistieren, wenn das der Fall ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X