ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
542
542
EMPFEHLEN
-
07.11.11 15:51 #1
- Registriert seit
- Jul 2007
- Beiträge
- 100
Hallo,
ich habe folgendes Problem:
Eine Klasse GUI die auch die Main Methode beinhaltet hat einen GUIManager.
Der GUIManager ist ein Singleton und bietet eine Methode zum Hinzufügen von Button "addButton()".
Jetzt sollen Subsysteme (Klassen) die die GUI nicht kennt! die Möglichkeit haben Button über den GUIManager an der GUI anzumelden.
Da die GUI die Sybsysteme nicht kennt und auch nicht weiß wie viele es davon gibt kann es keine Objekte davon erzeugen!
Wie kann man dieses Problem lösen?
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; public class GUI { public static void main(String[] args) { //Schedule a job for the event-dispatching thread: //creating and showing this application's GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } /** Create the GUI and show it. For thread safety, * this method should be invoked from the # * * event-dispatching thread. * */ private static void createAndShowGUI() { JFrame frame = new JFrame("HelloWorldSwing"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); GUIManager gm = GUIManager.getInstance(); JButton btn = gm.getButton(); if (btn != null) { frame.getContentPane().add(btn); } //Display the window. frame.pack(); frame.setVisible(true); } } import java.util.ArrayList; import javax.swing.JButton; public final class GUIManager { /** * Privates Klassenattribut, * wird beim erstmaligen Gebrauch (nicht beim Laden) der Klasse erzeugt */ private static GUIManager instance; private ArrayList<JButton> allButtons = new ArrayList<JButton>(); /** Konstruktor ist privat, Klasse darf nicht von außen instanziiert werden. */ private GUIManager() {} /** * Statische Methode „getInstance()“ liefert die einzige Instanz der Klasse zurück. * Ist synchronisiert und somit thread-sicher. */ public synchronized static GUIManager getInstance() { if (instance == null) { instance = new GUIManager(); } return instance; } public JButton getButton() { if (!this.allButtons.isEmpty()) { return this.allButtons.get(0); } return null; } public void addButton(JButton btn) { this.allButtons.add(btn); } } import javax.swing.JButton; public class Subsystem1 { static{ GUIManager gm = GUIManager.getInstance(); gm.addButton(new JButton("Subsystem1")); } } import javax.swing.JButton; public class Subsystem2 { static{ GUIManager gm = GUIManager.getInstance(); gm.addButton(new JButton("Subsystem2")); } } ...
VGGeändert von sheel (07.11.11 um 16:13 Uhr) Grund: Doppel und Codetags
-
10.11.11 09:53 #2
Hi,
das wird wahrscheinlich schierig, wenn du - wie in deinem Code - dem GUIManager nicht einmal sagst, zu welcher Oberfläche er die Buttons hinzufügen soll. Oder soll der GUIManager die Buttons nur speichern?
Gruß
FabioBitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]
Tutorials:
Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
JAnimationPanel - Animationen für Swing/AWT
SWTRatingBar (Bewertungs-Composite) selbst programmieren
____________________________________________________________________________
Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.
-
11.11.11 12:16 #3
- Registriert seit
- Feb 2009
- Beiträge
- 193
Darauf, dass GUIManager ein Singleton ist schließe ich mal, dass es wirklich nur einen davon gibt, der für alle GUI's zustädnig ist, auch wenn das oben bei dir nicht wirklich so deutlich wird. Mir fällt dazu direkt das Fabrikmuster in einer Modifikation ein, wie sie auch beim Fliegengewicht-Muster verwendet wirst. Dass du also in der Fabrik eine Methode implementierst die den Subsystemen die GUI's gibt die sie brauchen, bzw. diese erst noch erzeugt.
-
Hätte auch mal eine Frage zum thema Entwurfsmuster.
Folgender Fall sei gegeben:
Es soll ein System aufgebaut werden in dem Jahrestage eines Unternehmens verwaltet werden (Einstellung eines Mitarbeiters, Gründung, und ähnliches).
Das System hat andere Funktionen für unterschiedliche Benutzerrollen, z.B. Können alle Mitarbeiter Vorschläge für neue Jahrestage machen und Verwalter (die auch Mitarbeiter sind) diese akzeptieren oder an die Unternehmensführung (Ebenfalls auch Mitarbeiter) weiterleiten.
Weiterhin hat jeder Mitarbeiter eine Privatversion, wo dieser Privattermine verwalten kann.
Jetzt die Frage dazu, wie würde man sowas mit dem Fabrik Entwurfsmuster umsetzten, bzw. wie wären da die Zusammenhänge? Hatte mir bereits folgendes überlegt:
Produkt = Jahrestag
konkretes Produkt = ein definierter Jahrestag
Erzeuger = Mietarbeiter
konkreter Erzeuger = ****?
Ähnliche Themen
-
SF Grafiken gesucht bzw. Grafiker der zuarbeitet gesucht
Von sqlman im Forum Stellenangebote (entgeltlich)Antworten: 0Letzter Beitrag: 04.11.10, 17:13 -
Java-Prüfungsaufgabe - Entwurfsmuster für Grafikprogrammierung
Von fbergie im Forum JavaAntworten: 4Letzter Beitrag: 25.01.09, 01:58 -
Entwurfsmuster
Von lernen.2007 im Forum JavaAntworten: 9Letzter Beitrag: 28.01.07, 12:06 -
Template Method Entwurfsmuster?
Von Math55 im Forum JavaAntworten: 4Letzter Beitrag: 19.03.06, 19:18 -
gesucht...
Von RedZack im Forum SmalltalkAntworten: 1Letzter Beitrag: 26.07.01, 11:46





Zitieren
Login





