Observer

Status
Nicht offen für weitere Antworten.

Extractor

Aktives Mitglied
Hallo!

Wie implementiere ich einen Observer, der in einer Klasse (Server) schaut, was für Strings von der Methode getSystemNick rausgehen. Die Strings sollen nach "left" und "comming" geparst werden.

Wenn einer dieser Strings enthalten ist, soll in der Klasse "Client" ein Array von einer JList geupdatet werden.
Ich habe mich mal bisschen belesen mit dem Observer-Pattern, aber so richtig versteh ich das nicht.


Kann mir da jemand helfen, wo ich welche Methoden brauche usw.?


Gruß Jan
 
Die Java API bietet eine Standard Implementierung dieses Entwurfsmusters. Such einfach mal nach Observer und Observable.
 
Gut hab ich gemacht!

Zuerst muss ích ja mit addObserver() einen Observer anmelden.

Und wie geht es weiter?

Wie beochte ich die Methode? Und wie benachrichtige ich bei einer Änderung, so dass die Liste geupdated wird?


Schonmal Danke!


Gruß Jan
 
Observable hat doch nur neun Operationen,
hast du die alle mal angeschaut?

Tipp: fängt mit n an,

aber überlege erstmal was dein Observable überhaupt machen soll,
ganz von alleine irgendwelche Operationen aufrufen geht ja nicht,
ganz von alleine irgendwelche Zustände überprüfen ebensowenig..
 
Keine Ahnung, was Du genau machen willst. Du kannst halt im Observable mit setChanged() markieren, dass sich die Daten geändert haben und mit notifyObservers() die Observer benachrichtigen. Daraufhin wird dann automatisch in den Observern, die Du vorher mit addObserver() hinzugefügt hast, die Methode update() aufgerufen.
 
Also was ich vor habe ist folgendes:


Wenn der String von der Methode getSystemNick = "left" oder "comming" ist, dann soll in der Klasse "Client" ein update eines Array stattfinden.


Methode getSystemNick in der Klasse "Server"
Code:
 public String getSystemNick() throws RemoteException {
        return SystemNick;
    }



Hier soll dann halt erneut server.getUserlist() aufgerufen werden, wenn sich etwas ändert.
Code:
//UserList
	    String[] user = server.getUserlist();
	    userlist = new JList(user);


Aber wie hänge ich da einen Observer (oder ähnliches) dran?

Gruß Jan
 
Du musst einfach, sobald sich SystemNick im Observable ändert, zusätzlich setChanged() und notifyObservers() aufrufen. Die Reaktion darauf kommt in die update() Methode vom Observer.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben