Model View Controller

  • Themenstarter Gelöschtes Mitglied 65838
  • Beginndatum
G

Gelöschtes Mitglied 65838

Gast
Also ich verstehe das Grund Prinzip vom Model View Controller

Ich hab meine View mit den GUI Elementen
[CODE lang="java" title="View"]class View{
Button = new Button("hi")
methode getButton
}[/CODE]
mein Model mit der Logik
[CODE lang="java" title="Model"]class Model{
String = "Hallo Welt";
methode getString
}[/CODE]
und meinen Controller der die verbindet
Java:
class Controller{
    this.view
    this.model
        
    view.getButton.onAction -> Sysout(model.getString)
}

So jetzt erstmal bin ich bei diesem verständnis schon mal auf einem Richtigen weg

dann Zweitens:
wie behandelt man hier den Code wenn zb die View dynamisch erweitert wird

bei mir scheitert es immer dran dass die Ganzen Klassen teile von Model und view haben

und dann noch zu den Pakcages wie kann man die so aufteilen dass es noch verwaltbar ist...

ich habe bei meinem Programm 5 Views ergo dann 15 klassen aufwärts in einem Package da blick ich nicht mehr durch
 

Robert Zenz

Top Contributor
Du musst sie ja nicht im gleichen Paket lagern. Ganz im Gegenteil, es macht Sinn diese in getrennten Paketen zu halten. Der grosze Vorteil von MVC ist an und fuer sich dass man die Geschaeftslogik von der Praesentation getrennt hat, zumindest in der Theorie ist es dann sehr leicht moeglich einfach eine andere Oberflaeche zu verwenden. Wenn du also jetzt von der Logik und der Praesentation als austauschbare und erweiterbare Teile denkst, macht es mehr Sinn diese in einem anderem Paket zu halten.

Dass Java-Models schnell sehr grosz werden, liegt nunmal in der Natur der Sache. Wenn du Fuenf unterschiedliche Entitaeten hast, wirst du Fuenf Klassen brauchen. Es gibt auch andere Ansaetze, einen davon hat das JVx Framework, in welchem man DataBooks hat welche aehnlich zu einer Map funktionieren und direkt auf eine Datenbank greifen. Der Vorteil ist dass man sich eben ein groszes Java Model spart und man immer mit dem Model der Datenbank arbeitet. Der Nachteil ist dass man die Typ-Sicherheit beim kompilieren verliert. Der Ansatz hat aber insbesondere Vorteile wenn man in eine bestehende Datenbank greifen will.

So oder so, es gibt immer Leute die den Boilerplate versuchen verzweifelt zu vermeiden welcher mit einem Java Model einhergeht (Getter, Setter und so weiter), aber man muss sich hier immer vor Augen fuehren dass es sich dabei nicht um Komplexitaet handelt. Wenn du 100k Zeilen POJOs hast die nur aus Gettern und Settern bestehen, ist das absolut Erdnuesse im Vergleich zu einem 10k Zeilen Projekt welches einen eigenen Web- und Datenbankserver implementiert, zusammen mit einem Compiler-Plugin um Klassen zu generieren. Verwechsle hier also nicht "das ist aber viel Code" mit "das ist aber schwierig zu handhaben", nur weil etwas eine grosze Code-Basis ist, bedeutet nicht dass das Projekt unwartbar ist. Absolut nicht. Die wichtige Frage ist wieviel Komplexitaet in dem Projekt steckt, und das ist beim Model vernchlaessigbar wenn es nur POJOs sind.

Zu guter letzt, wenn dein Model waechst, kannst du es natuerlich noch in weitere Pakete teilen. Nehmen wir mal an du haettest ein ERP System mit POS Anbindung. Dann koenntest du das Model aufteilen in:
  • YOURAPP.model.inventory.articles
  • YOURAPP.model.inventory.storage
  • YOURAPP.model.customers
  • YOURAPP.model.employees
Und so weiter. EIn gutes Prinzip welches man hier aber immer beachten sollte ist, dass du nie versuchen solltest eine "saubere" Trennung zu erzwingen. Mache nur das was Sinn macht. Fuenf Model Klassen wuerde ich nicht aufteilen, das zahlt sich absolut nicht aus. View und Controller abzutrennen hingegen macht sehr wohl Sinn.
 
G

Gelöschtes Mitglied 65838

Gast
und wie behandelt man eine Dynamische gui im MVC gibts da ein Beispiel dafür
 

Robert Zenz

Top Contributor
Also um noch kurz nachzusetzen. Wenn du es als Uebung machst, waere vermutlich die einfache Aufteilung:
  • YOURAPP.controller.*
  • YOURAPP.model.*
  • YOURAPP.view.*
Durchaus ein guter Ansatz. Die Pakete wuerde man in einem "richtigen" Projekt vermutlich anders nennen, zum Beispiel "gui", "backend", "logic" und aehnliches. Wenn du dann weiter "ueben" willst, kannst du ja diese weiter unterteilen, zum Beispiel wenn du Zwei Oberflaechen haben willst:
  • YOURAPP.view.javafx
  • YOURAPP.view.swing
und wie behandelt man eine Dynamische gui im MVC gibts da ein Beispiel dafür
Was meinst du mit "dynamisch" in dem Zusammenhang?
 
G

Gelöschtes Mitglied 65838

Gast
Also um noch kurz nachzusetzen. Wenn du es als Uebung machst, waere vermutlich die einfache Aufteilung:
  • YOURAPP.controller.*
  • YOURAPP.model.*
  • YOURAPP.view.*
Durchaus ein guter Ansatz. Die Pakete wuerde man in einem "richtigen" Projekt vermutlich anders nennen, zum Beispiel "gui", "backend", "logic" und aehnliches. Wenn du dann weiter "ueben" willst, kannst du ja diese weiter unterteilen, zum Beispiel wenn du Zwei Oberflaechen haben willst:
  • YOURAPP.view.javafx
  • YOURAPP.view.swing

Was meinst du mit "dynamisch" in dem Zusammenhang?
ich füge im nachhinein durch events nodes hinzu dann müsste die view es wissen dass ein node gekommen ist und die View muss dann dem node den eventhanlder geben
 

Robert Zenz

Top Contributor
Entweder die GUI weisz wann sie sich neu zeichnen muss, beziehungsweise sich neue Daten holen muss, zum Beispiel wenn der "Speichern" Knopf gedrueckt wurde. Oder du hast ein "aktives Model", welches die GUI notifiziert sobald sich etwas daran geaendert hat. Ein Beispiel dafuer sind die Bereits genannten DataBooks aus JVx, welches fuer jede Aenderungen Events feuern. Ein anderes gutes Beispiel dafuer ist die JavaFX ObservableList, welche ebenfalls Events feuert sobald sich die Liste geaendert hat.

Erstere Ansatz reicht vermutlich vollkommen aus wenn immer nur ueber die GUI gearbeitet wird. Weil dort weisz man ja wann der Benutzer etwas getan hat, und ob sich diese Aktion auf die Daten auswirkt oder nicht. Das wuerde fuer den Anfang auf jeden Fall reichen.
 
G

Gelöschtes Mitglied 65838

Gast
mvc.PNG

Hab ich das jetzt so richtig eingeteilt oder bin ich da immer noch aufm Holzweg
 

Robert Zenz

Top Contributor
Ja, vom Prinzip her wuerde ich das auch so machen. Eventuell waere es noch interessant die Postfixe von den Klassen wegzulassen, da dir ja bereits das Paket (und meistens der Kontext) bereits sagt worum es geht. Aber das ist dann Geschmackssache und eine Kleinigkeit.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Model View Controller: Verständnisproblem Java Basics - Anfänger-Themen 13
C OOP Model View Controller - Prinzip Java Basics - Anfänger-Themen 6
K Model-View-Controller Java Basics - Anfänger-Themen 15
K Frage zum Model View Controller Prinzip Java Basics - Anfänger-Themen 6
megachucky Model View Controller Pattern - Suche Hilfe bei Anwendung Java Basics - Anfänger-Themen 4
S Model-View-Controller Konzept Beispiel Java Basics - Anfänger-Themen 11
I Klassen Java Qt Model/View Datenhaltung Java Basics - Anfänger-Themen 4
G Einbindung von MVC (Model-View-Controll) Java Basics - Anfänger-Themen 8
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
G Model mit Models füllen Java Basics - Anfänger-Themen 9
W Befüllung einer Tabelle mit Checkbox, Trennung GUI und Model Java Basics - Anfänger-Themen 5
Q MVC Verständnisproblem: Controller vs model.modelChanged() Java Basics - Anfänger-Themen 0
M Problem mit JTable und Model Java Basics - Anfänger-Themen 3
C Bounded Range Model Java Basics - Anfänger-Themen 1
M Input/Output Vom Model zur Database? Java Basics - Anfänger-Themen 7
propra Wie mache ich einem JPanel mein bereits instanziertes Model bekannt Java Basics - Anfänger-Themen 9
F MVC: Model Klasse erstellen Java Basics - Anfänger-Themen 3
N local variable model is accessed from within inner class; needs to be declared final Java Basics - Anfänger-Themen 4
L Eigenes List Model für Icon + String -> Speicherhungrig? Java Basics - Anfänger-Themen 8
S Forumlare nach dem MVC-Model Java Basics - Anfänger-Themen 5
hdi Fehler beim Model-Update einer JList (DefaultListModel) Java Basics - Anfänger-Themen 3
hdi JList mit Model und Observer -> Chaos, blicke nicht durch Java Basics - Anfänger-Themen 22
K Problem mit Abstract Table Model Java Basics - Anfänger-Themen 5
C JTable Model - getValueAt (int) Java Basics - Anfänger-Themen 3
G JTable mit eigenen Model neu zeichnen Java Basics - Anfänger-Themen 4
L Model einer Table bekommen Java Basics - Anfänger-Themen 6
E Model und i18n bzw. Properties Java Basics - Anfänger-Themen 10
P Tabelle mit Model -> getSelectedRow Java Basics - Anfänger-Themen 4
M model übergeben? Java Basics - Anfänger-Themen 16
I Kamera anschließen / Bild machen / Live View / Externe Blitz Java Basics - Anfänger-Themen 19
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
G SQL View query Java Basics - Anfänger-Themen 4
H Best Practice View probleme Java Basics - Anfänger-Themen 2
L Java Package View Java Basics - Anfänger-Themen 6
S Modell View Controller Verständnisfrage Java Basics - Anfänger-Themen 24
M Erste Schritte Eclipse + design view Java Basics - Anfänger-Themen 3
R aktualisierung des View im MVC-Pattern Java Basics - Anfänger-Themen 5
G Eclipse: In Problems View schreiben? Java Basics - Anfänger-Themen 10
A Datentypen Typecast im View Java Basics - Anfänger-Themen 4
A OOP MVC Frage View Java Basics - Anfänger-Themen 2
F View überwachen Java Basics - Anfänger-Themen 6
S JTree, Problem mit View Update Java Basics - Anfänger-Themen 2
K JAVA HEX View! Java Basics - Anfänger-Themen 2
M Controller + View: Fehlermeldungen Java Basics - Anfänger-Themen 2
E MVC - Was darf View Java Basics - Anfänger-Themen 15
E MVC - ein View für mehrere Models Java Basics - Anfänger-Themen 2
EchtKeineAhnungManchmal Controller aus FXML Datei entfernen Java Basics - Anfänger-Themen 49
B Objekt von EJB in Controller (CDI) - Klasse füllen? Java Basics - Anfänger-Themen 3
H Eine befühlte Klasse weiter geben an Controller Java Basics - Anfänger-Themen 12
R Variablen Variable an FXML-Controller übergeben Java Basics - Anfänger-Themen 4
N JavaFX - (Controller) - Klasse verkleinern Java Basics - Anfänger-Themen 8
J MVC Pattern, mehrere Controller/Views/Models Java Basics - Anfänger-Themen 0
F MVC -> Probleme beim Controller Java Basics - Anfänger-Themen 6
F Viele Controller-Klassen Java Basics - Anfänger-Themen 5
Antoras Singleton oder Controller / Datenverwaltungsklasse? Java Basics - Anfänger-Themen 10
T Kommunikation zwischen Controller und GUI Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben