Servus,
ich habe nun etwas gelesen und glaube ich setze meine Architektur so um:
Views - es gibt einen RootFrame, der sich von JFrame ableitet und ein Menu besitzt. Dazu ein JPanel (mainPanel) und da drin setze ich das JPanel was von jedem View konfiguriert wird. Im RootFrame gibt es auch die Methode replaceView(), welche alles was zum mainPanel gehört hat, rausschmeisst (removeAll()), dann das Parameter-JPanel, also den neuen View da einhängt und das mainPanel revalidiert und repaint()-ed. Dann gibt es im Paket noch viele View, etwa 'WelcomeView', die von JPanel erben.
Model - das Model besteht aus den Entitäten und obendrauf sitzt eine Fassade. Der Controller ruft nur Methoden der Fassade auf.
Controller - ich nutze das Action-Konzept von Swing, habe also etwa die Klasse ExitAction, die von AbstractAction erbt und etwa dem 'Datei-Menu-Eintrag' 'Beenden' zugewiesen ist. In dem Fall ruft die Methode nur System.exit(0) auf und beendet so die Anwendung. Falls wirklich etwas zu tun ist, dann holt sich der Controller die notwendigen Daten aus dem View mittels flushWindow(), dann wird mit den Daten die Fassaden-Methode zum Anwendungsfall aufgerufen und dann wird mit dem Ergebnis an den neuen View weiterverwiesen. Dem Konstruktur zum View werden die passenden Daten mitgegeben.
Inwieweit ist dies ein passabler Ansatz?
Ich war mir nicht sicher, dass ich die Action-Objekte gleich als Controller nutze und nicht etwa noch ein GuiController-Objekt habe, was alle Methoden anbietet, die dann erst auf die Model-Fassade zugreifen. Ich wusste auch nicht, ob es geschickt ist, bei den Views eigentlich immer nur das JPanel im mainPanel auszutauschen.
Danke vorab fürs Feedback.
ich habe nun etwas gelesen und glaube ich setze meine Architektur so um:
Views - es gibt einen RootFrame, der sich von JFrame ableitet und ein Menu besitzt. Dazu ein JPanel (mainPanel) und da drin setze ich das JPanel was von jedem View konfiguriert wird. Im RootFrame gibt es auch die Methode replaceView(), welche alles was zum mainPanel gehört hat, rausschmeisst (removeAll()), dann das Parameter-JPanel, also den neuen View da einhängt und das mainPanel revalidiert und repaint()-ed. Dann gibt es im Paket noch viele View, etwa 'WelcomeView', die von JPanel erben.
Model - das Model besteht aus den Entitäten und obendrauf sitzt eine Fassade. Der Controller ruft nur Methoden der Fassade auf.
Controller - ich nutze das Action-Konzept von Swing, habe also etwa die Klasse ExitAction, die von AbstractAction erbt und etwa dem 'Datei-Menu-Eintrag' 'Beenden' zugewiesen ist. In dem Fall ruft die Methode nur System.exit(0) auf und beendet so die Anwendung. Falls wirklich etwas zu tun ist, dann holt sich der Controller die notwendigen Daten aus dem View mittels flushWindow(), dann wird mit den Daten die Fassaden-Methode zum Anwendungsfall aufgerufen und dann wird mit dem Ergebnis an den neuen View weiterverwiesen. Dem Konstruktur zum View werden die passenden Daten mitgegeben.
Inwieweit ist dies ein passabler Ansatz?
Ich war mir nicht sicher, dass ich die Action-Objekte gleich als Controller nutze und nicht etwa noch ein GuiController-Objekt habe, was alle Methoden anbietet, die dann erst auf die Model-Fassade zugreifen. Ich wusste auch nicht, ob es geschickt ist, bei den Views eigentlich immer nur das JPanel im mainPanel auszutauschen.
Danke vorab fürs Feedback.