OOP MVC instanziieren

chuvak

Aktives Mitglied
Ich möchte ein Programm nach dem MVC-Prinzip machen, allerdings "verschmelze" ich View und Controller und belasse es bei dem Namen "View".
Bei mir gibt es 2 Views und ein Model, alles wird in der Main-Klasse instanziiert.
Die Views haben jeweils unterschiedliche Werte, die sie im Model speichern.

Meine Frage: Wie soll ich das alles instanziieren?

Main:
Java:
public Main()
{
   View view1 = new View();
   View view2 = new View();
   Model model = new Model();
}


Die Views brauchen natürlich eine Verbindung zum Model.
View:
Java:
public View()
{
   Model model = new Model(this);
}

Das Model muss wissen, um welche von den beiden Views es sich genau handelt.
Model:
Java:
class Model
{
   View view;

public Model(View view)
{
   this.view = view;
}

public Model() // leeres Kontrukt für die Main-Klasse
{
   
}
}


Ist es so irgendwie richtig?
 
S

SlaterB

Gast
was brauchst du genau bzw. welchem deiner Sätze oder Code-Zeilen ist zu vertrauen?
willst du am Ende wirklich exakt 2 View und 1 Model-Objekte haben?

dann passt doch direkt nicht zusammen, dass die main ein Model erzeugt und die Views je auch eins, macht schon 3 Models,
3 Model != 1 Model

----

noch gar nicht erklärt:
wieso hat ein Model eine Referenz auf eine View? wie passt das mit 2 Views zusammen? soll eine davon gespeichert werden oder 2 oder noch eine ganz andere View?
entweder das Model kennt keine View oder eine Liste von Views, dann muss auch nichts im Konstruktor übergeben werden

---
eine Möglichkeit ist, dass die Views keine Models erzeugen und Model keine View als Konstruktor-Parameter verlangt,
dann z.B.
> View view1 = new View();
> View view2 = new View();
> Model model = new Model();
wie bisher und evtl.
> view1.setModel(model);
> view2.setModel(model);

in der setModel()-Methode wird, falls nötig, model.addOneViewOfMany(this); aufgerufen
 

cz3kit

Bekanntes Mitglied
Also wenn ich mich richtig erinnere, dann kennt das Model die View nicht. Wozu auch auch. Du packst den Controller und die View zusammen, da reichts es dan ja, wenn deine View nur das Model kennt.

Wozu soll das Model auch die View kennen. Das MCV Prinzip sagt ja, dass an ein Model verschiedene Views rankönnen, ohne das Model das weiß, z.B. Konsolen Apllikation oder eine GUI.
 

Ähnliche Java Themen

Neue Themen


Oben