MVC Richtig verwendet?

Spin

Top Contributor
Hallo liebe Community,

ich habe mal eine Frage -laut unserem Prof. müssen wir unser funktionierendes Spiel umstrukturieren - da wir nicht das MVC Pattern eingehalten haben.

Nun möchte ich euch Fragen, wie ihr es realsieren würdet.


Ich habe ein MainFrame und benutze das CardLayout.
Java:
public class MainFrame(){
// instanziieren der panels und so weiter

// damit ich switchen kann brauch jedes panel oder jeder listener getLayout von MainFrame
// daher:

new StartPanel(this);

// weiter brauche ich ein Model , damit ich änderungen machen kann nach mausklick
// daher :
new StartPanel(this,Foo)

}


Ich habe ein StartPanel:

Java:
public class StartPanel {

public StartPanel(MainFrame frame , Foo foo){
  // buttons usw.

 
}

}

Jetzt muss ich den buttons einen Listener geben, damit dieser ja reagiert. Gebe ich dem einfach einen Actionlistener.

Java:
button.addActionListener(new MyActionListener(frame,foo));

Java:
//Konstruktor
MyActionListener(Component c, Foo foo){
 /// über componente komme ich an den button.
// wenn der button gedrückt wird , soll in einem model FOO was geändert werden

// mein CardLayout bekomme  ich : 
this.frame.getLayout()



// also hier : 
this.foo.zahl = 6;
}

Model:
Java:
public class Foo{

public int zahl = 0;

}

Ich finde das aber unheimlich hässlich und möchte da einen anderen Ansatz haben, gerne auch links wo ich schauen kann. Aber brauche mal ein Komplettes MVC projekt wo sowas gelöst ist.



Ich habe einen weiteren Ansatz, aber der ist auch ...boah genau sowas.
Beispielsweise, adde ich den Actionlistener nicht im Panel sondern :

in einem Controller.

In dem kenne ich das MainFrame und gehe über dieses an das StartPanel und hole mir den Button.
Das instanziieren des Listners passiert denn in dem Controller und ich adde diesen dann direkt.


Java:
public class GameController{

new MainFrame()
new Game()

MyActionListener l = new MyActionListener(mainframe, game);

// holen des buttons
 mainframe.getStartPanel().getButton.addActionListener(l);

}



Welchen Ansatz würdet ihr wählen, oder kennt ihr bessere? Danke vielen gruß Spin
 

Volvagia

Top Contributor
Schau mal ins FAQ, da gibt es ein gutes Tutorial von Marco.
Ich selbst würde gar keins machen, da ich bis heute den Sinn nicht verstanden habe. Wenn man ein Objekt designt, macht es doch mehr Sinn, die Instanzvariablen alle beim Objekt zu behalten, anstatt sie über viele Klassen zu verteilen, und komplizierte Listeneraufrufe dazwischenzuhängen.
 

Spin

Top Contributor
Hallo,

ich habe mir schon elendig viele MVC Beispiele angeschaut und auch das hier im Forum. Habe damit auch die ersten Ansätze super umgesetzt und Observer pattern ist auch kein Problem.

Damit konnte ich einiges an Objekt geschubse wet machen.

Würde mich über einen konkreten Vorschlag iund über Feedback auf mein gepostetes Beispiel freuen.

Ständig baut man Listener dazwischen , was super nervig ist, aber man soll es anscheind so machen.

danke für mehr feedback.!
 

Michael...

Top Contributor
Würde mich über einen konkreten Vorschlag iund über Feedback auf mein gepostetes Beispiel freuen.
Eine konkrete Implementierung des MVC kommt immer auf den Zusammenhang an. Anhand der rudimentären Beschreibung bzw. Fragestellung kann man da nicht viel zu sagen.

Ob ein ActionListener von einem Controller übergeben wird oder direkt in der Viewkomponente erzeugt wird, hängt vom Zweck der Aktion ab.

Dann ergeben sich da noch weitere Fragestellungen:

Warum sollte ein StartPanel einer Referenz auf das MainFrame besitzen?

Java:
this.foo.zahl = 6;
Schon mal was von get und set Methoden gehört?


Der Controller hält eine Referenz der View und des Models - kennt aber im Idealfall nur deren Interface. Die View hält eine Referenz auf das Models und kennt im Idealfall nur das Interface des Models. Der Controller registriert sich als Observer/Listener an der View. Aus der View heraus angestossene "Änderungsanforderungen" werden an den Controller übergeben und durch diesen ans Model weitergeleitet. Die View registriert sich als Observer/Listener am Model und bekommt dadurch Statusänderungen mitgeteilt. --> Fertig ist das MVC Konstrukt

Bei kleinerne Anwendungen ist u.U. zu Aufwändig das Ideal umzusetzen und es ist pragmatischer View und Controller zusammen zu legen.

@Volvagia: Der Sinn des MVC ist es u.a. einzelne Komponenten ohne grossartige Anpassung des Codes gegen andere/neue auszutauschen. Auch ist es damit möglich unterschiedliche Sichten auf ein gemeinsames Model anwendungs/zweckspezifisch anzubieten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Regex greift nicht richtig Java Basics - Anfänger-Themen 4
C Darstellung von Datum - Codes richtig? Java Basics - Anfänger-Themen 2
C Rechnen mit Brüchen, ist meine Lösung soweit richtig? Java Basics - Anfänger-Themen 4
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
K Warum läuft das Programm nicht(bzw. nicht richtig) Java Basics - Anfänger-Themen 4
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
B Semaphoren in Abhängigkeit an Bedingungen richtig setzen Java Basics - Anfänger-Themen 3
berserkerdq2 Habe ich die Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 3
R CSV Reader läuft nicht richtig an Java Basics - Anfänger-Themen 8
E Umlaute und Sonderzeichen werden nach der Build Project nicht richtig angezeigt Java Basics - Anfänger-Themen 2
G jButton führt Main Methode nicht richtig aus Java Basics - Anfänger-Themen 3
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
JensXF Methode überschreiben, so richtig? Java Basics - Anfänger-Themen 4
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
C Sind die while-Schleifen richtig in for-Schleifen ersetzt worden? Java Basics - Anfänger-Themen 8
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
L Ist der Code richtig Java Basics - Anfänger-Themen 3
J Wie bestehenden Quellcode in IDE richtig übernehmen Java Basics - Anfänger-Themen 27
F Methoden Methode richtig aufrufen Java Basics - Anfänger-Themen 3
D Klassen Klassendiagramm richtig erstellen Java Basics - Anfänger-Themen 20
J Module richtig einbinden Java Basics - Anfänger-Themen 2
B Sind meine If-Statements richtig angesetzt ? Java Basics - Anfänger-Themen 27
V Boolean Wert nicht richtig erkannt Java Basics - Anfänger-Themen 4
X Wie Generics richtig benutzen ? Java Basics - Anfänger-Themen 5
P Stringbuilder richtig einsetzen Java Basics - Anfänger-Themen 1
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
A Array richtig füllen Java Basics - Anfänger-Themen 2
S String richtig formatieren Java Basics - Anfänger-Themen 2
P Methoden richtig anwenden Java Basics - Anfänger-Themen 3
O Popoup Menü im JTable richtig anzeigen Java Basics - Anfänger-Themen 6
D Richtig für Programmieren an der UNI lernen Java Basics - Anfänger-Themen 8
X Best Practice Ein int Array richtig mischen Java Basics - Anfänger-Themen 20
D Richtig Vorbereiten auf eine Programmier Klausur Studium. Java Basics - Anfänger-Themen 7
M ObservableList wird nicht richtig geleert Java Basics - Anfänger-Themen 0
T Sortieralgorithmen richtig? Java Basics - Anfänger-Themen 1
X Objekte einer ArrayList richtig ausgeben? Java Basics - Anfänger-Themen 8
S Wie implementiere ich MouseDragged richtig Java Basics - Anfänger-Themen 7
F Konstruktor richtig implementiert? Frage zu Benutzereingaben... Java Basics - Anfänger-Themen 9
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
P Input/Output PQ-Formel wird nicht richtig berechnet Java Basics - Anfänger-Themen 6
P Zeichenkette Zeichen ausschlißen funktioniert nicht richtig Java Basics - Anfänger-Themen 9
H Wie lerne ich Java richtig? Java Basics - Anfänger-Themen 2
N Ich weiß nicht, wie ich meinen Code richtig designen soll und komme nicht weiter Java Basics - Anfänger-Themen 4
B Wie instanzisiert man einen Cursor richtig? Java Basics - Anfänger-Themen 3
J Polymorphie und Dynamisches Binden richtig nutzen Java Basics - Anfänger-Themen 11
N Best Practice Ist die Sortierung richtig? Java Basics - Anfänger-Themen 3
J Erste Schritte Lottozahlen richtig generieren. Java Basics - Anfänger-Themen 12
J Behauptung so richtig? Java Basics - Anfänger-Themen 10
R Listen richtig implementieren Java Basics - Anfänger-Themen 3
B OOP Objekt in IF erzeugen - funktioniert nicht so richtig Java Basics - Anfänger-Themen 11
A Methode richtig überladen Java Basics - Anfänger-Themen 6
H Aufgabe so richtig gelöst? Java Basics - Anfänger-Themen 14
S Code richtig / besser machbar? (Nicht sicher, ob Code selbst falsch ist) Java Basics - Anfänger-Themen 4
W Ist mein Struktogram richtig erstellt worden? Java Basics - Anfänger-Themen 4
L Taschenrechner mit switch und while funktioniert noch nicht richtig Java Basics - Anfänger-Themen 22
U Mehrfach verwendete Sub-Klassen richtig einbinden Java Basics - Anfänger-Themen 4
L Schleife funktioniert nicht richtig Java Basics - Anfänger-Themen 12
Meeresgott OOP Richtig mit java.util.Property umgehen Java Basics - Anfänger-Themen 22
Y Erste Schritte Ich verstehe this. nicht so richtig Java Basics - Anfänger-Themen 5
I Programm von mir - keine Ahnung mehr ob richtig falsch:-( Java Basics - Anfänger-Themen 6
M Abstände richtig wiedergeben Java Basics - Anfänger-Themen 2
S nio move() funktioniert nicht richtig Java Basics - Anfänger-Themen 2
J Timer richtig pausieren Java Basics - Anfänger-Themen 2
B Ist meine Klasse richtig kommentiert? Java Basics - Anfänger-Themen 2
kilopack15 Ist diese setter-Methode richtig? Java Basics - Anfänger-Themen 2
H OOP, wie gehts richtig? (Beispiel von meinem Prof) Java Basics - Anfänger-Themen 6
S Primzahlen berechnen funktioniert nicht richtig Java Basics - Anfänger-Themen 1
kilopack15 Lösungsansatz richtig? Java Basics - Anfänger-Themen 23
Meeresgott OOP Socket Verbindung richtig Kapseln Java Basics - Anfänger-Themen 0
Meeresgott OOP Gui, Logik und Datenbank richtig aufbauen Java Basics - Anfänger-Themen 43
T Datum wird auf der Konsole richtig ausgegeben, aber im Textarea kommt ERROR Java Basics - Anfänger-Themen 8
C Warum funktioniert mein If Statement nicht richtig? Java Basics - Anfänger-Themen 18
J Aufgabe(Threads) richtig verstanden/implementiert Java Basics - Anfänger-Themen 27
K Erste Schritte Wie lerne ich Java richtig? Java Basics - Anfänger-Themen 22
U Richtig *.properties speichern Java Basics - Anfänger-Themen 0
N Lambda Ausdrücke richtig schreiben Java Basics - Anfänger-Themen 4
B OOP Wie benutze ich die Main Funktion richtig? Java Basics - Anfänger-Themen 10
3 Gitternetz richtig darstellen Java Basics - Anfänger-Themen 3
B Exception richtig einbinden Java Basics - Anfänger-Themen 1
D CSV Files richtig zusammenführen Java Basics - Anfänger-Themen 3
D Array richtig ausgeben Java Basics - Anfänger-Themen 6
Z HashMap richtig benutzen Java Basics - Anfänger-Themen 2
S Variable (int) erhöht sich nicht richtig Java Basics - Anfänger-Themen 18
J Vererbung Wurden die Aufgaben richtig programmiert? Java Basics - Anfänger-Themen 20
J Iterator Funktioniert nicht richtig in StackImplementierung Java Basics - Anfänger-Themen 3
L0MiN Input/Output Wie kann ich Kompilierfehler richtig ausgeben lassen (Runtime)? Java Basics - Anfänger-Themen 1
J Programm im Jar-Format funktioniert nicht richtig Java Basics - Anfänger-Themen 9
L Arrays richtig initialisieren Java Basics - Anfänger-Themen 1
V Java Regex richtig parsen Java Basics - Anfänger-Themen 2
O Programm funktioniert nur im Debugger richtig Java Basics - Anfänger-Themen 2
F Klassen für Objekt richtig erstellen Java Basics - Anfänger-Themen 8
M Programm wird nicht richtig ausgeführt Java Basics - Anfänger-Themen 4
Q Path wird nicht richtig "übersetzt"? Java Basics - Anfänger-Themen 7
W HTML Code, Umlaute werden nicht richtig dargestellt Java Basics - Anfänger-Themen 7
T Threads Threads richtig synchronisieren Java Basics - Anfänger-Themen 3
? Wie sind ESCAPE-Sequenzen (z.B \f für einen Seitenvorschub) richtig anuwenden? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen


Oben