MVC- Design Frage

java_beginner11

Neues Mitglied
Liebes Forum!

Ich habe den MVC-Pattern grundsätzlich verstanden und habe mir auch schon einige Beispiel durchgesehn bzw. selbst implementiert.
Leider wird der Pattern immer so erklärt:
Das Modell ist ein Objekt wie z.B. eine Person. Über getName, getNachname, etc. holt sich die View die Daten des Modells. (immer Primitive Datentypen).
Natürlich muss man, wenn Daten im Modell verändert werden, über den Controller das Modell informieren.

Was ich nicht verstehe, ist, wenn das Modell komplexer ist. Z.B. eine Personendatenbank welches durch ein Modell-Objekt repräsentiert wird, dass eine Liste von Personen enthält. Wenn ich nun auf der View Seite eine JTable mache und sich die View die PersonenListe vom Modell holt, dann werden die Änderungen ja direkt übernommen: sprich, man brauch die Model nicht informieren.

Ist das ein richtiges vorgehen oder darf man solche "Short-Cuts" nicht verwenden? Wie würde man so etwas richtig implementieren? Darf man Objekte an die View übergeben oder nur primitive Datentypen.

Bin für jeden Hinweis dankbar:)
 
Zuletzt bearbeitet:

Thallius

Top Contributor
Also so wie du schreibst kannst du das MVC eigentlich nicht verstanden haben. Denn das essentielle am MVC ist, dass Model und View nichts miteinander zu tun haben. Durch die kapselnd der beiden Objekte wird ja erst die Universalität des Models erreicht. Ales läuft über den Controller. Der View fragt Daten beim Controller an. Dieser holt die Daten aus dem Model und gibt sie an das View. Werden die Daten im View geändert, dann sagt das View dem Controller Bescheid und dieser gibt das an das Model weiter welches die Änderungen übernimmt.

Dabei können die Daten zwar Objekte sein und du kannst auch das Design zunächst so wählen, dass komplette Objekte durchgereicht werden. Aberves muss halt so sein, dass wenn sich das Modell ändert, der View trotzdem weiter damit zurecht kommt und anders herum. Beaucht der View andere Daten, dann muss der Controller die Daten liefern.

Gruß

Claus
 

java_beginner11

Neues Mitglied
Hallo!
Danke für deine Antwort.
Wenn ich mir auf java - The MVC pattern and SWING - Stack Overflow die Grafik ansehe (bei der ersten Antwort), so hat hier (wie auch in dem Buch beschrieben, wo die Grafik herkommt) die View eine Referenz auf das Model. Das Modell informiert die View unter Anwendung des Observer-Patterns (ist das Design, wo alles über den Controller läuft nicht Model-View-Presenter?)

Leider habe ich deine Beschreibung nicht ganz verstanden; Angenommen, ich bekomme ein Objekt über den Controller und gebe den in die JTable. Dort ändere ich in der JTable irgendein Attribut des Objektes. Nun ist ja bereits das Modell auf den gleichen Stand wie die View (da ich ja ein Objekt verwendet habe). Warum muss ich jetzt in Controller sagen, dass es sich verändert hat?

lg
 
Zuletzt bearbeitet:

AndiE

Top Contributor
Ich denke, es ist vielleicht gut, das ein einem konkreten Beispiel zu erklären.

Ich nehme mal eine Verwaltung von Adressen an. Die Ansicht zeigt in Textfeldern die Daten, wie Name, Vorname, Ort, PLZ und Telefonnummer, und besitzt zum Navigieren mehrere Button( erstes, letzte, folgendes, vorhergehendes, 10 vor und 10 zurück).

Offensichtlich soll die Ansicht ja beim Start schon was anzeigen- den ersten Adresseintrag zum Beispiel. Wie kommt dieser in die Ansicht? Wenn wir auf die andere Seite sehen, dann haben wir ein Datenmodell, also ein Klasse Adressliste, die hier serialisierbar ist. Diese Klasse hat eine Liste von Objekten der Klasse Adresse und Methoden darin zu navigieren. Es gibt auch eine Methode, um ein Objekt der Klasse Adresse auszugeben. Dieses Objekt der Klasse Adresse ist es, was sich der Controler holt. Die Ansicht "kennt" also die Klasse Adresse und holt sich dessen aktuelles Objekt vom Controler. Die Attribute dieser Klasse sind es, die in den Textfeldern der View dargestellt werden.
Klickt jetzt der User auf einen Button (z.B. +10), dann feuert dieser, und ruft eine Methode im Controler auf. DIese ruft dann im Modell die Methode auf, die das Objekt, das 10 Einträge nach dem aktuellen Objekt steht, zum aktuellen Objekt erklärt, und erklärt gleichzeitig die Ansicht für ungültig. Daraufhin wird die Ansicht verworfen. Die Ansichtsklasse ruft wieder den Controler auf, der ihr das aktuelle Objekt der Klasse Adresse übergibt, und mit dessen Einträgen die Textfelder aktualisiert werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Frage zum UML Design Java Basics - Anfänger-Themen 1
B Frage zu Datenbank Design - Rechnungen, Angebote... und deren Positionen Java Basics - Anfänger-Themen 4
D Besseres Design Frage Java Basics - Anfänger-Themen 1
B OOP Frage zu Klassen Design Java Basics - Anfänger-Themen 5
hdi Kleine Design/Convention Frage zu Konstruktoren Java Basics - Anfänger-Themen 4
hdi Design-Frage: bin unzufrieden Java Basics - Anfänger-Themen 11
M Java Design Frage Java Basics - Anfänger-Themen 2
S Frage zum Design der Vererbung (Kartendeck und Dupletten) Java Basics - Anfänger-Themen 12
S Design Frage Java Basics - Anfänger-Themen 5
D was ist der vorteil vom Builder-design pattern? Java Basics - Anfänger-Themen 11
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
F Design pattern Java Basics - Anfänger-Themen 29
N design time vs build time vs compile time Java Basics - Anfänger-Themen 2
H Eclipse , Design-Modus, unvollständige Darstellung Java Basics - Anfänger-Themen 0
M LookandFeel Design Java Basics - Anfänger-Themen 4
D Design Pattern Command Java Basics - Anfänger-Themen 3
M Erste Schritte Eclipse + design view Java Basics - Anfänger-Themen 3
J Design Patterns Java Basics - Anfänger-Themen 8
Tarrew Proxy Design-Pattern Java Basics - Anfänger-Themen 1
N Was bedeutet "Implementierung vor dem Client verbergen" bei Design Patterns? Java Basics - Anfänger-Themen 2
C Java Klassen Design? Java Basics - Anfänger-Themen 5
OnDemand Software-Design Java Basics - Anfänger-Themen 1
S Je nach erhaltene Daten unterschiedlich reagieren (Design Pattern?) Java Basics - Anfänger-Themen 3
B Warum haben Java Programme ein anderes Design? Java Basics - Anfänger-Themen 5
S Singleton (Design Patterns) Java Basics - Anfänger-Themen 16
A Design Pattern - Welche? Java Basics - Anfänger-Themen 33
Rudolf OOP Übungen zu Design Pattern in Java Java Basics - Anfänger-Themen 6
K Interface als Instanzvariable = gutes Design Java Basics - Anfänger-Themen 6
S Eclipse Design-Reiter fehlt Java Basics - Anfänger-Themen 6
D Design-Tipps für neues Programm (Excel-Charts-...) Java Basics - Anfänger-Themen 3
M Button mit eigenem Design Java Basics - Anfänger-Themen 6
R Welches Design pattern Java Basics - Anfänger-Themen 10
S Gutes Design mit statischen oder Member-Methoden Java Basics - Anfänger-Themen 53
X Externer GUI Code verwenden / (Design Ansicht) Java Basics - Anfänger-Themen 3
Hamstinator Design und Listener in verschiedenen Klassen Java Basics - Anfänger-Themen 6
J Methoden design Java Basics - Anfänger-Themen 3
hdi Design-Problem Java Basics - Anfänger-Themen 2
Q Listen - DefaultListModel trotz Design ueber GUI? Java Basics - Anfänger-Themen 10
B Java-Anwendung im Windows Design Java Basics - Anfänger-Themen 8
M code design Java Basics - Anfänger-Themen 14
M log4j design Java Basics - Anfänger-Themen 11
D Design Fragen Java Basics - Anfänger-Themen 5
M Design: Abfrage auf korrekte Eingabe Java Basics - Anfänger-Themen 4
W Design Problem Java Basics - Anfänger-Themen 7
T Wie wichtig ist Design Patterns in einer Firma? Java Basics - Anfänger-Themen 8
S log4j "Richtiges" Design Java Basics - Anfänger-Themen 4
D JButton - Design ändern Java Basics - Anfänger-Themen 8
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
I Frage Thymeleaf -> Prefix / Suffix ändern? Java Basics - Anfänger-Themen 11
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
T Frage zu Parse Java Basics - Anfänger-Themen 2
H Frage an die Profis Java Basics - Anfänger-Themen 4
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
P Frage zu Rekursion und Backtracking Java Basics - Anfänger-Themen 2
H Frage zur Ausgabe Java Basics - Anfänger-Themen 4
H Frage zu arithmetischen Operationen Java Basics - Anfänger-Themen 20
F Kurze Frage zu replace() Java Basics - Anfänger-Themen 19
JavaSchmecktLecker Polymorphie Frage zur Methodenüberschreibung Java Basics - Anfänger-Themen 21
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
B Erste Schritte Frage zu Instanzierung und Referenzen Java Basics - Anfänger-Themen 8
DoubleM Runtime.getRuntime().exec Frage Java Basics - Anfänger-Themen 2
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
O Frage: Formaler Typbezeichner? Java Basics - Anfänger-Themen 3
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
N Spezielle frage zum Comparator Java Basics - Anfänger-Themen 6
L Frage zum Array Java Basics - Anfänger-Themen 1
I Hilfe bei Klausur Frage Java Basics - Anfänger-Themen 8
izoards Drucken Frage zu FAQ Beitrag Java Basics - Anfänger-Themen 2
J Frage zu meinem Code (OOP) Java Basics - Anfänger-Themen 4
sserio Split() -> Regex Frage. Java Basics - Anfänger-Themen 7
A OCA Study Guide: 2. Frage aus Kapitel 3 Java Basics - Anfänger-Themen 9
sserio Date Library Frage Java Basics - Anfänger-Themen 9
Max246Sch Frage zu Währungsrechner Code Java Basics - Anfänger-Themen 2
sserio Frage zu HashMaps Java Basics - Anfänger-Themen 20
sserio Frage zu Threading - Multithreading Java Basics - Anfänger-Themen 2
sserio Frage zu Lambda Ausdrücken Java Basics - Anfänger-Themen 7
sserio Frage zu BigInteger Java Basics - Anfänger-Themen 1
D Frage bzgl. Enum-Handhabung Java Basics - Anfänger-Themen 16
xxx12 Frage Java Basics - Anfänger-Themen 2
I Generelle Frage zu Mikroservices (Spring Boot?), Docker... Java Basics - Anfänger-Themen 7
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
A Frage zur programmierung Java Basics - Anfänger-Themen 12
M Frage zur Methode split der Klasse String Java Basics - Anfänger-Themen 32
R Input/Output Frage zu Java IO Java Basics - Anfänger-Themen 6
M Frage zu printWriter Java Basics - Anfänger-Themen 5
C Frage zu OLSMultipleLinearRegression Java Basics - Anfänger-Themen 31
KogoroMori21 Frage zum Euklidischen Algorithmus Java Basics - Anfänger-Themen 11
S Verständnis-Frage zu einer HÜ? Java Basics - Anfänger-Themen 1
F Frage betreff Programm mit dem man C++-Code in JAVA-Code übersetzen lassen kann Java Basics - Anfänger-Themen 2
L Frage zur Ticket Maschine Java Basics - Anfänger-Themen 1
J Frage zu OOP-Klassendiagramm Java Basics - Anfänger-Themen 8
OSchriever Frage zu Compiler Java Basics - Anfänger-Themen 8
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
F Frage betreff Programmierbücher zu Lagerverwaltung als Konsolenprogramm Java Basics - Anfänger-Themen 3
dieter000 Kurze Frage kann mir ejmand kurz diesen Code erklären, bzw wie man die zeilen erklärt und so Java Basics - Anfänger-Themen 1
I String.split regex Frage Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben