Frage zu Programmstruktur

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich plane gerade ein neues Java Projekt welches diesmal ein wenig größer werden soll.
Nun frage ich mich wie ich die Struktur - speziell was die Menus mit deren MenuItems und deren Handlern angeht - aufbaue.

Wie geht Ihr vor, wenn Ihr in euren Programmen PopupMenus z.B. per Rechtsklick und bei Klick auf einen Button und ausserdem noch eine Menubar habt und einige Menuitems sich vllt. sogar gleichen bzw. die selbe Aktion ausführen sollen?

  • - Schreibt Ihr für jede Aktion einen eigenen Actionhandler und gebt diesen allen Menüpunkten die diese Aktion ausführen kann?
    - Schreibt ihr an jedes Menuitem immer addActionListener(new ActionListener(...));?
    - Verwaltet Ihr eure Menus in einer Zentralen Klasse wo Ihr wiederrum eines der ersten beiden Punkte angeht?

ich bin sehr gespannt ... Danke! :)
 

tfa

Top Contributor
Anonymous hat gesagt.:
  • - Schreibt Ihr für jede Aktion einen eigenen Actionhandler und gebt diesen allen Menüpunkten die diese Aktion ausführen kann?
    - Schreibt ihr an jedes Menuitem immer addActionListener(new ActionListener(...));?

  • Letzteres, wobei ich ButtonModel oder Action nehmen würde, statt ActionListener.

    - Verwaltet Ihr eure Menus in einer Zentralen Klasse wo Ihr wiederrum eines der ersten beiden Punkte angeht?
Informiere dich über das Entwurfsmuster "Model-View-Controller" (MVC). Meiner Meinung die einzig sinnvolle Art, GUI-Programme zu strukturieren.
 
G

Guest

Gast
tfa hat gesagt.:
Letzteres, wobei ich ButtonModel oder Action nehmen würde, statt ActionListener.
Wenn ich allerdings immer an der Stelle wo ich ein Menü brauche mir dieses zusammenbaue, wird doch der code bei entsprechend vielen Menüs recht unübersichtlich oder etwa nicht?

tfa hat gesagt.:
Informiere dich über das Entwurfsmuster "Model-View-Controller" (MVC). Meiner Meinung die einzig sinnvolle Art, GUI-Programme zu strukturieren.
Deswegen bin ich ja aud die Idee gekommen eine Klasse zu schreiben die mir meine Menus mit deren Actions verwaltet und in der GUI diese dann die menüs an die entsprechenden Componenten hängt ...
 

tfa

Top Contributor
Anonymous hat gesagt.:
tfa hat gesagt.:
Letzteres, wobei ich ButtonModel oder Action nehmen würde, statt ActionListener.
Wenn ich allerdings immer an der Stelle wo ich ein Menü brauche mir dieses zusammenbaue, wird doch der code bei entsprechend vielen Menüs recht unübersichtlich oder etwa nicht?
Musst nicht sein, wenn man das vernünftig umsetzt. Einen Actionlistener mit 25 if-else-if Fällen finde ich jedenfalls unübersichtlicher. Die zweite Variante hat auch den Vorteil, dass man eine Action leicht an mehrere Menu-Items oder Buttons koppeln kann.
 
G

Guest

Gast
ok, bedeutet wenn du zum beispiel die Aktionen "add", "update" und "delete" sowohl in der Menubar, als auch in verschiedenen Popupmenus haben willst kapselst du diese in extra Klassen und weist diese dann den entsprechenden MenItems zu - im prinzip oder?

Definierst du die Actions dann als static und rufst diese z.B. per getInstance auf oder wie kann man sich das vorstellen?
 

tfa

Top Contributor
Anonymous hat gesagt.:
ok, bedeutet wenn du zum beispiel die Aktionen "add", "update" und "delete" sowohl in der Menubar, als auch in verschiedenen Popupmenus haben willst kapselst du diese in extra Klassen und weist diese dann den entsprechenden MenItems zu - im prinzip oder?
Im Prinzip ja.
Definierst du die Actions dann als static und rufst diese z.B. per getInstance auf oder wie kann man sich das vorstellen?
Nein nein, nichts mit static! Die Actions werden vom Controller verwaltet und den View-Klassen zur Verknüpfung mit den entsprechenden Komponenten übergeben. Das sind alles ganz normale Klassen, keine Singletons oder so.
 
G

Guest

Gast
tfa hat gesagt.:
Nein nein, nichts mit static! Die Actions werden vom Controller verwaltet und den View-Klassen zur Verknüpfung mit den entsprechenden Komponenten übergeben. Das sind alles ganz normale Klassen, keine Singletons oder so.

Öhh okay, aber dann würde ja wenn ich zum Beispiel an 3 Stellen die addAction brauche in meinem Programm 3x eine Instanz von eben dieser erzeugt werden. Was wäre falsch daran per Singleton zu arbeiten und so nur eine Instanz zu haben?!
 

tfa

Top Contributor
Du hast natürlich nur ein Objekt dieser Add-Action (wenn es an den 3 Stellen immer die selbe sein soll). Eine Controller-Klasse hat dann z.B. die Methode
Code:
public Action getAddAction() {
    if (addAction==null) {
        addAction = new .... 
    }
    return addAction;
}
Deine drei View-Klassen müssen sich dann eben diese Action aus ein und dem selben Controller-Objekt holen.
Wie du das organisiert, bleibt dir überlassen. Du könntest meinetwegen dem Controller die View-Objekte erzeugen lassen und bei der Gelegenheit gleich die Action mit übergeben. Oder die Views holen sich das was sie brauchen aus dem Controller-Objekt. Platz für Singletons sehe ich hier überhaupt nicht.
 
G

Guest

Gast
tfa hat gesagt.:
Platz für Singletons sehe ich hier überhaupt nicht.

Entweder ist heute absolut nicht mein Tag oder ich suche nach dem "Singleton im Heuhaufen" ...
Wenn ich mir einen Controller schreibe, der meine ganzen Actions verwaltet und einzig und allein die Aufgabe hat diese Actions bei Anfrage ggf. zu erzeugen und bei Anfrage zurück zu geben, könnte ich eigtl. diese Methoden static machen um nicht extra ein Objekt für den ActionController zu laden (welcher dann ja z.B. an 3 Stellen im Code geladen werden müsste)

Also hätte ich dann folgende Methode:
Code:
public static Action getAddAction() {
    if (addAction==null) {
        addAction = new ....
    }
    return addAction;
}

Wenn ich mich jetzt nicht irre, wäre dies eigtl. genau das selbe als wenn ich die Action gleich als Singleton definiert hätte oder?

Was würde dafür sprechen die methoden im Controller nicht static zu machen?

Danke und verwirrte Grüße :)
 

tfa

Top Contributor
Theoretisch geht das natürlich auch mit statischen Methoden oder Singletons. Wenn du damit glücklich wirst und alles funktioniert, wird keiner was dagegen haben.
Aber einige Sachen funktionieren so einfach nicht, z.B. Interfaces, Vererbung, viele nützliche Entwurfsmuster.
Ich habe beispielsweise viele Controller, die in einer Hierarchie stehen. Ein Haupt-Controller kann viele Unter-Controller besitzten (für Sub-Views), und einen Parent-Controller. Mit einer rein statischen Lösung ist das schwer zu realsieren.
Verwandte Controller können von einer gemeinsam Oberklasse abgeleitet sein oder spezielle Interfaces implementieren. Statisch geht sowas nicht. Das ist aber wie gesagt ein größeres Projekt. Für kleine Sachen wäre das vielleicht Overkill. Aber dein Programm wächst ja möglicherweise auch noch...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
A Frage zum UML Design 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
N Best Practice Frage zum MVC-Pattern Java Basics - Anfänger-Themen 2
dieter000 Frage zu einem Beispiel... Java Basics - Anfänger-Themen 5
J Frage zum Loggen Java Basics - Anfänger-Themen 18
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
Zrebna Frage zum "Referenzen-konzept" in Java Java Basics - Anfänger-Themen 8
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
marcooooo Frage zu bestimmten Beispiel Java Basics - Anfänger-Themen 31
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
B Erste Schritte Learning Coding (!) Frage an erfahrene Programmierer. Java Basics - Anfänger-Themen 23
M konzeptuelle Frage: In welcher Klasse definiert man am Besten Methoden, die die Kommunikation mit dem User regeln? Java Basics - Anfänger-Themen 8
B Frage zum Code verständnis im Resultat Java Basics - Anfänger-Themen 10
C Exception-Frage Java Basics - Anfänger-Themen 3
J Eine Frage zur Schreibweise == ? : Java Basics - Anfänger-Themen 3
S Frage des Designs Java Basics - Anfänger-Themen 1
JavaTalksToMe Extends/Implements Frage Java Basics - Anfänger-Themen 3
pkm Frage zu Servletfunktion Java Basics - Anfänger-Themen 0
B Frage zur Währungsumrechnung Java Basics - Anfänger-Themen 3
S Allgemeine Frage über Generics und Vererbungen Java Basics - Anfänger-Themen 5
Kirby.exe Frage zur Verwendung von Interfaces Java Basics - Anfänger-Themen 6
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
D Frage zur IDE IntelliJ IDEA Java Basics - Anfänger-Themen 6
H Frage zum 2d Array Java Basics - Anfänger-Themen 1
N Frage zum Newton-Fraktal Java Basics - Anfänger-Themen 1
H Frage zu interfaces Java Basics - Anfänger-Themen 1
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
I Frage zu SkipList Java Basics - Anfänger-Themen 4
G Frage zu JScrollPane Java Basics - Anfänger-Themen 12
Kirby.exe Allgemeine Frage Java Basics - Anfänger-Themen 3
W Frage zu anonymen Klassen Java Basics - Anfänger-Themen 4
J Kleine Frage zu OOP Java Basics - Anfänger-Themen 371
S Frage Klasse und Objekte Java Basics - Anfänger-Themen 2
F Frage zu Iteratoren Java Basics - Anfänger-Themen 2
C Erste Schritte Frage zur ArrayList Java Basics - Anfänger-Themen 15
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
H Frage zur ermittlung eines doppelte Paars aus Sotieralgorithmus Java Basics - Anfänger-Themen 4
H Frage zum Array Java Basics - Anfänger-Themen 17
G Schach -Frage 2- Maussteuerung Java Basics - Anfänger-Themen 7
G Schach in Java - Allgemeine Frage zur Architektur Java Basics - Anfänger-Themen 7
B Fachliche Frage bei Rechnungen Java Basics - Anfänger-Themen 16
B Frage zu: String... strings -> Ungleiche Anzahl an Parameter? Java Basics - Anfänger-Themen 4
B Frage zu Datenbank Design - Rechnungen, Angebote... und deren Positionen Java Basics - Anfänger-Themen 4
H Frage zu Parameter einer Methode Java Basics - Anfänger-Themen 2
H Einfache Frage zur Punktnotation objektname.methode(wert) Java Basics - Anfänger-Themen 2
H Frage zu Parameter einer Methode Java Basics - Anfänger-Themen 3

Ähnliche Java Themen


Oben