Frage

Mein Modell in meinem MVC -Muster generiert Komponenten zur Laufzeit und verleiht ihnen die Ansicht, dass auf dem Bildschirm über Update () Methode angezeigt wird (Sie wissen, das Modell ist die beobachtbare und die Ansicht ist der Beobachter). Ich muss aber auch Zuhörer zu diesen Komponenten hinzufügen, und der Controller hat die Hörermethoden (weil sie sagen, dass das MVC -Muster so ist) und es nicht an diesem Update -Prozess beteiligt ist. Daher kann ich die Hörer zur Laufzeit nicht hinzufügen, sondern nur im Startkonstruktor des Controllers.

Ich habe eine Idee, die den Controller zum Beobachter macht und dann die Daten an die Ansicht gibt und die Zuhörer hinzufügt. Glaubst du, das wäre in Ordnung?

War es hilfreich?

Lösung

Yup, wenn der Controller Ihr Modellbeobachter damit ermöglicht, die Ansicht zu aktualisieren, würde mir in MVC -Orthodoxie definitiv zu meinem Geist passen.

Andere Tipps

Ich denke, dass Sie einige Drähte gekreuzt haben.

  1. Das Modell ist beobachtet (prüfen!)
  2. Die Ansicht beobachtet das Modell (überprüfen!)
  3. Der Controller ist an die Ansicht gebunden (Todo!)

Die Nr. 3 bedeutet, dass die Benutzerinteraktionen aus der Ansicht einen registrierten Hörer in der Controller -Klasse aufrufen sollen, die dann den Modellstatus aktualisiert.

Dies ist der "klassische" Swing MVC. alt text
(Quelle: sun.com)

Ein "modifizierter" Swing -MVC (das von einigen anderen Antworten auf diese Frage empfohlen wurde) spielt die Controller die Rolle des Mediators.

In diesem Design ruft die Ansicht eine geeignete Methode für den Controller auf, wenn der Benutzer Aktionen ausführt. Dann greift der Controller auf das Modell zu (möglicherweise aktualisiert es). Wenn das Modell geändert wird, benachrichtigt es schließlich interessierte Zuhörer (in diesem Fall der Controller).

Dies ist ein "modifizierter" MVC. alt text
(Quelle: sun.com)

Das zweite Design ('modifiziert' MVC) ermöglicht eine sehr offensichtliche Entkopplung des Modells und der Ansicht.

Weitere Informationen finden Sie unter Dieser Artikel Über Java Swing MVC. Es ist fantastisch.

In Swing zum Beispiel ist der Controller/Action -Listener der Beobachter für die Ansicht (Schaltflächen usw.) und beim Aufrufen der Schaltflächen (dh wenn sich die Ansicht ändert) Controller beginnt und interagiert mit dem Modell und aktualisiert die Ansicht erneut (mit neuen Modelländerungen)

Also, was Sie am Ende vorgeschlagen haben, macht für mich Sinn :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top