prinzipielles verständnis für Oberfläche/Code-trennung

javalui

Aktives Mitglied
Hey javafreunde,

ich bin relativ fit in Java allerdings habe ich bisher nie wirklich etwas mit oberflächen zu tun gehabt. Soweit ich weis ist es ja immer so, dass man die Oberfläche möglichst vom eigendlichen Programm trennen soll... und genau da hab ich ein verständnisproblem...


Nehmen wir an ich möchte einen Artikel anlegen mit einem "Neuer Artikel"-Button.
Ich habe eine Artikellist-Klasse eine Article-Klasse und eine MainProg-Klasse und meine MainWindow-Klasse mit der Oberfläche.

Wie kann ich jetzt über die Oberfläche auf Funktionen der Artikelklasse zugreifen ohne von jeder meiner Klassen eine instanz in meiner GUIKlasse zu erstellen? Und wohin packe ich die Funktion um einen Artikel zu instanzieren und sie dann mit Hilfe meiner ArtikelList.add(Article a) zu adden?

Ich hoffe man kann das verstehen...
 
Zuletzt bearbeitet:
Hi,

ich würde mir Beispoele für MVC Muster ansehen.

Kann man auf viele Arten implementieren.

Gruß,

Martin
 
Moin,

ich beschäftige mich zur Zeit selbst mit MVC und verstehe noch einiges nicht. Aber das könnte ich dir beantworten glaube ich.🙂

Das ist eben der "Trick" an der ganzen Sache: Deine MainWindow-Klasse(View) greift gar nicht - direkt - auf auf deine Artikel oder ArtikelList(Models) zu, sondern das regelt deine MainProg-Klasse(Controller).
Diese ist die einzige, die beide Klassen kennt und sämtliche Interaktion koordiniert. Das bedeutet auch, dass deine Daten-ändernden Funktionen auch in den Controller kommen.

Bei einer anderen Variante, lernt auch die View das Model kennen und kann sich dann direkt bei dem Model als Listener anmelden, um über Datenänderungen informiert zu werden(nützlich, wenn mehrere Views das Selbe Model nutzen). Aber zum Daten ändern würde ich dennoch den Umweg über den Controller nehmen.

Aber da hat Marcinek schon recht, es gibt viele Möglichkeiten und das war nur die, die mir persönlich am besten gefällt.


(Was mir dabei nur Kopfschmerzen bereitet, ist wie ich Unterfenster realisieren soll, sind diese Teil von der View oder koordiniert das der Controller. Gibt es für jedes Unterfenster eine neue Klasse, oder kann man das mit einer "initUnterfenster"-Funktion realisieren. Aber ich denke das ist ein anderes Thema und das sollte ich wohl seperat ansprechen.)

-- Edit --
sry fürs Ausgraben des Threads, aber ich fands schade, dass hier nichts konstruktives rum kam.
 
Zuletzt bearbeitet:
Wenn dein Button nur den Artikel zufügt, kann der deine Liste ja ruhig kennen und die add() - Methode aufrufen. Dann ist halt für diese Aktion der Button dein Controller (Du musst nicht alles mit nur einem Controller lösen😉)

Gruß Vanny
 

Zurück
Oben