Oberserver nur einmal verwendbar?

Status
Nicht offen für weitere Antworten.

Kaffeebohne

Bekanntes Mitglied
Also der Observable kann ja mit den Methoden setChanged(), notifyObservers den Oberservern ein Objekt schicken.

Dieses wird bei den Observern mit der Mehode update() bewerkstelligt. Dieser Methode kann man ja nur ein Objekt übergeben und sie gibt es nur ein mal.

Wenn ich jetzt in einer Klasse welche Observer implementiert aber mehrere Objekte "updaten" will geht das doch nicht oder? Ich hab ja nur eine Updatemethode und ein zu übergebendes Objekt.
 

Snape

Bekanntes Mitglied
Ich würde es eh nicht mit Observable sondern anders herum mit Listenern machen. Es steht Dir ja die Implementierung frei, was an die Listener an Objekten übergeben wird. Und üblicherweise kann es mehr als nur einen Listener geben. Man nehme z.B. einen Datenkern und zwei Frames. Dann werden eben beide Frames bei dem Datenkern als Listener registriert. Ändern sich im Datenkern relevante Daten, werden alle registrierten Listener, in diesem Fall also die beiden Frames, informiert. Fertig. Was der Datenkern an Informationen mitgibt, bleibt Dir überlassen.
 
B

bygones

Gast
die update methode hat ja als Paramter einen Typ Object - also kannst du ja auch mehrere Object rein stecken (Collection / Wrapper) usw.
 

Kaffeebohne

Bekanntes Mitglied
Okay, das hört sich gut an. Ich hab grad mal in der API rumgeschaut also Listener gibt es dort nicht. Du meinst die EventListener oder?

Ich glaub das ist nicht das was ich Suche.

Ich habe ein Konsolenprogramm für das ich ein GUI mache. Ich will aber nicht die Daten und Kontrollstruktur mit der Ansicht verbinden, sondern nur die Konstrollstruktur (MVC). Deshalb dachte ich an Observablegeschichte.
 
B

bygones

Gast
die gesamte Listener Struktur basiert auf dem Observer Prinzip.

das angesprochenen Listener Prinzip müsstes du selbst implementieren, wenn du nicht eine der vorhandenen Listener nutzen kannst !
 

AlArenal

Top Contributor
Ist aber im Grunde voll easy. Ich habe z.B. in meiner Anwendung zwei Views (sind Komponenten aus ner kommerz. Lib zur Darstellung von Graphen) und beide haben je drei Buttons drüber zum schrittweisen reinzoomen, rauszoomen, und Normal-Zoom. Anstatt nun im übelsten JBuilder-Style 6 ActionListener-Klassen zu stricken, erschlage ich das verallgemeinert und wiederverwendbar mit einer einzigen Klasse:

Code:
public class MultiViewZoom_ActionListener implements ActionListener {
    public static final int ACTION_ZOOM_IN = 1;
    public static final int ACTION_ZOOM_OUT = 2;
    public static final int ACTION_ZOOM_NORMAL = 3;
    
    private MultiView view;
    private int action;
    
    public MultiViewZoom_ActionListener(MultiView view, int action) {
        this.view = view;
        this.action = action;
    }
    
    /**
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    public void actionPerformed(ActionEvent e) {
        switch (action) {
        case ACTION_ZOOM_IN: {
            view.zoomIn();
            break;
        }
            
        case ACTION_ZOOM_OUT: {
            view.zoomOut();
            break;
        }
        
        case ACTION_ZOOM_NORMAL: {
            view.zoomNormal();
            break;
        }

        default:        
        // Fehlermeldung, weil Action nicht definiert/ausgewertet
        }
    }
}

Für die Buttons macht man dann einfach nur einen
Code:
button_view1_zoomIn.addActionListener(new MultiViewZoom_ActionListener(view1),  MultiViewZoom_ActionListener.ACTION_ZOOM_IN));
 

Kaffeebohne

Bekanntes Mitglied
Okay,

dann ist mal wieder Lesezeit angesagt. Ich werd mal das Kapitel 15 von der Javainsel durch ackern, denn ich habe noch nicht so viel Ahnung von der JavaGUI, nur das was man mit Netbeans so erzeugt.

Das ist aber, wie ich jetzt gemerkt habe, gar nicht gut, wenn man noch nicht die Funktionsweise des Ganzen verinnerlicht hat.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Thread started nur einmal Allgemeine Java-Themen 19
I if-eingaben nur einmal anzeigen Allgemeine Java-Themen 6
D Erste Schritte Arrays vergleichen und die zahlen die nur einmal vorkommen ausgeben Allgemeine Java-Themen 5
K Erste Schritte Start einer JAR Datei 2 Wege aber einmal nicht die volle Funktionlität Allgemeine Java-Themen 20
L Java Slick2D stürzt ab- Zu viel auf einmal? (LinkedList) Allgemeine Java-Themen 7
F Best Practice Application extern nur einmal startbar Allgemeine Java-Themen 3
S Eine Klasse die jeden String nur einmal annimmt Allgemeine Java-Themen 4
R Zufallszahl nur einmal Allgemeine Java-Themen 3
K Mehrere Arrays auf einmal erstellen Allgemeine Java-Themen 2
B Alle Exceptions auf einmal abfangen Allgemeine Java-Themen 4
S mit Class eine Klasse nur einmal instantiieren Allgemeine Java-Themen 4
T KeyListener lässt sich nur einmal drücken Allgemeine Java-Themen 2
C Geschachtelte For-Schleife: Äußere Schleife wird nur einmal durchlaufen!? Allgemeine Java-Themen 3
T RegEx, wieder einmal ... :-( Allgemeine Java-Themen 19
W Wieder einmal: PNG ausdrucken Allgemeine Java-Themen 3
M Anwendung nur einmal starten / Zeichen in String zählen Allgemeine Java-Themen 7
C Anwendung nur einmal Starten Allgemeine Java-Themen 11
D Scrollbalken in meiner JTable auf einmal weg. Allgemeine Java-Themen 2
K Thread für SocketServer nur einmal starten Allgemeine Java-Themen 5
MQue JFrame nur einmal öffnen Allgemeine Java-Themen 3
E Hibernateanwendung auf einmal laaangsam? Allgemeine Java-Themen 3
G Mehrere Bytes auf einmal einlesen Allgemeine Java-Themen 4
B Noch einmal Kopierschutz, sorry Allgemeine Java-Themen 7
S auf einmal gibt es einen fehler. Allgemeine Java-Themen 3
Guybrush Threepwood iText de facto nicht mehr verwendbar Allgemeine Java-Themen 15

Ähnliche Java Themen

Neue Themen


Oben