Frage zum MVC-Prinzip

Status
Nicht offen für weitere Antworten.

Evolver

Bekanntes Mitglied
Ich schreibe ein Übungsprogramm nach dem MVC-Prinzip. In diesem Programm habe ich unter anderem ein Texteingabefeld und einen Button. Beim Klick auf den Button soll der Wert aus dem Eingabefeld geholt werden und dann wird damit irgendetwas gemacht.
Nach dem MVC-Prinzip habe ich Button und Textfeld in die View-Klasse gepackt, den ActionListener für den Button in die Control-Klasse. Das Problem entsteht, da die View eine Referenz auf die Control braucht, und die Control braucht eine Referenz auf die View. Ein paar Codeauszüge zur Verdeutlichung:

Code:
// im Konstruktor der Hauptklasse
mData = new Model();
mGfx = new View(mCtrl);
mCtrl = new Control(mGfx);
// ...

// im Konstruktor der View-Klasse
mBU.addActionListener(mCtrl.mBU);  // mBU ist JButton
// ...

Ich bekomme in diesem Fall eine NullPointerException. Einfach das Control-Objekt vor dem View-Objekt anzulegen ist auch keine Lösung, da die Control-Klasse natürlich auch auf die View-Klasse zugreift (Daten aus dem Eingabefeld holen usw.). Also was muss ich da tun, wie macht man es richtig?
 
Entweder Du erzeugst den Controller direkt beim Initialisieren der View (z.B. im Konstruktor) und weist die Referenz dann zu oder Du setzt die Referenz halt nachträglich, wenn der Controller erzeugt wurde. Ansonsten beisst sich die Katze ja in den Schwanz.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben