Observer Observable update() .

Status
Nicht offen für weitere Antworten.

kejo

Mitglied
Hallo!

Kann mir jemand sagen wie ich in meiner update() Funktion feststellen kann in welcher Funktion nun die notifyObservers() Funktion ausgelöst wird?

Danke im voraus
kejo
 

clemson

Bekanntes Mitglied
wieso implementierst du nicht deinen eigenen ansatz des observer patterns, welches eben die übergabe eines parameters an die update methode oder ähnliches ermöglicht...

IMHO geth es anders nicht, herauszufinden, von welcher methode aus die updateObservers() aufgerufen wurde. eventuell mittels einem umweg über den stacktrace.
 

kejo

Mitglied
warum?...hmm, weil ich mich noch nicht so gut auskenne...
wie macht man das? gibts dazu auch anleitungen? oder könnt ihr mir sagen wie ich dabei anfange?
 

clemson

Bekanntes Mitglied
eine möglichkeit wäre folgende (wobei es da mehrere ansätze gibt):


MyObserver
Code:
package org.javaforum.y06.okt.observer;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class MyObserver
{

	private List<MyObservable> observableList = new ArrayList<MyObservable>();

	public void addMyObservable(MyObservable observable)
	{
		observableList.add(observable);
	}

	public void removeMyObservable(MyObservable observable)
	{
		observableList.remove(observable);
	}

	public void foo()
	{
		Iterator<MyObservable> it = observableList.iterator();
		while (it.hasNext())
		{
			it.next().updateFoo();
		}
	}

	public void bar()
	{
		Iterator<MyObservable> it = observableList.iterator();
		while (it.hasNext())
		{
			it.next().updateBar();
		}
	}

}


MyObservable
Code:
package org.javaforum.y06.okt.observer;

public interface MyObservable
{

	public void updateFoo();

	public void updateBar();

}
 

byte

Top Contributor
clemson hat gesagt.:
IMHO geth es anders nicht, herauszufinden, von welcher methode aus die updateObservers() aufgerufen wurde. eventuell mittels einem umweg über den stacktrace.

Natürlich geht das. ???:L Die Observer#update(Observable, Object) hat als Parameter ein Observable. Das ist genau das Objekt, das den Observer benachrichtigt hat. Zusätzlich kann man beim beanachrichtigen auch noch ein weiteres beliebiges Objekt als Parameter übergeben.

Es ist also hier nicht nötig, eine eigene Implementierung zu schreiben.


PS: Im übrigen ist der Beispielcode ziemlich kontraproduktiv, denn das Problem des Threaderstellers wird da ignoriert.
 

kejo

Mitglied
Danke an alle!
Da bin ich erleichtert, dass es auch einfacher geht..
Das Objekt Observable, wie kann ich das auslesen? Ich habe es in einen String gecastet
und da stand dann drin Daten@10b344 ...sowas in der Art.
 

LeggY

Neues Mitglied
das mit dem casten von einem observer is so ne sache.
zuerst wäre es sinnvoll zu gucken ob dein Object das du aus dem Observer ziehst nen String is bevor du es castest.
geht ganz einfach mit:

Code:
Object ikP = null;
    ikP = e.nextElement();
    if (ikP instanceof String) {
        String oSW = (String) ikP;
    }

Nur so kann man sich nämlich wirklich sicher sein, das das casten auch funktioniert.
 

kejo

Mitglied
Ich meine nicht das übergebene Object, sondern das Observable object, indem der Absender drinsteht.
 

byte

Top Contributor
Du weisst ja vorher, bei welchen Klassen der Observer angemeldet ist. Diese Information brauchst Du dann nur in der update() auswerten und kannst dann entsprechend reagieren:

Code:
public void update(Observable obs, Object o) {
  if(obs instanceof Observable1) {
    ...
  } else if(obs instanceof Observable2) {
    ...
  } else {
    ...
  }
}

Das Observable zu String casten macht ja mal gar keinen Sinn, denn ein String ist kein Observable.
 

clemson

Bekanntes Mitglied
byto hat gesagt.:
Natürlich geht das. ???:L Die Observer#update(Observable, Object) hat als Parameter ein Observable. Das ist genau das Objekt, das den Observer benachrichtigt hat.

hmm, dann hab ich das wohl übersehen... entschuldige
 

kejo

Mitglied
Ich kann so allerdings nur sehen, in welcher Klasse die notify Funktion aufgerufen wurde. Aber von welcher Funktion in der Klasse kann ich nicht sehen, oder?
 
S

SlaterB

Gast
dafür gibt es abgesehen von Logging wohl in keinem Java-Zusammenhang etwas vorgegebenes,
da musst du selber aktiv werden,

entweder bei jedem Aufruf die Operation als String mitübergeben in einer Exemplarvariable jeder deiner Klassen oder in neuimplementierten update-Operation,

oder

den StrackTrace daraufhin analysieren
 

byte

Top Contributor
Jo, wie gesagt: Du kannst ja zusätzlich ein Object übergeben beim benachrichtigen. Dort kannst Du etwaige Informationen unterbringen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Observable/Observer update wird nicht ausgeführt Java Basics - Anfänger-Themen 9
G Implementierung des Observer/Observable Patterns - Gut so? Java Basics - Anfänger-Themen 3
H [erledigt] Observable/Observer Beobachter entfernen Java Basics - Anfänger-Themen 2
G Unterschied Observer&Observable<->java.beans.Prope Java Basics - Anfänger-Themen 4
G Observable/Observer-Patterns Java Basics - Anfänger-Themen 9
J Methoden Observer-Pattern mit Consumer und accept( ) Java Basics - Anfänger-Themen 6
J Implementierung von Observer und Singleton-Pattern Java Basics - Anfänger-Themen 9
fLooojava MVC Pattern und Observer Pattern Java Basics - Anfänger-Themen 6
Y Observer update Java Basics - Anfänger-Themen 3
N Observer funktioniert nicht Java Basics - Anfänger-Themen 13
G Observer löst zweimal aus Java Basics - Anfänger-Themen 8
A ein observer "post"problem Java Basics - Anfänger-Themen 3
A Observer Pattern Problem Java Basics - Anfänger-Themen 15
J Interface Frage zu Interfces am Beispiel Observer Pattern Java Basics - Anfänger-Themen 8
F Observer Java Basics - Anfänger-Themen 7
U observer thread safe Java Basics - Anfänger-Themen 4
Helgon Observer Pattern - hasChanged() immer false Java Basics - Anfänger-Themen 10
B Wozu Observer? Java Basics - Anfänger-Themen 9
Spin Observer Patteern java Java Basics - Anfänger-Themen 7
O Liste - Observer/Observeable - HashMap Hilfe Java Basics - Anfänger-Themen 19
C OOP Observer Pattern Java Basics - Anfänger-Themen 2
O Observer - Einfach erklärt? Java Basics - Anfänger-Themen 5
K Observer Pattern notifyObservers Java Basics - Anfänger-Themen 9
P Fragen zum Observer Muster und Datenbanken Java Basics - Anfänger-Themen 2
T Observer ansprechen Java Basics - Anfänger-Themen 2
R Observer funktioniert nicht. Sehe keine Fehler Java Basics - Anfänger-Themen 2
W Observer-Pattern Java Basics - Anfänger-Themen 3
hdi JList mit Model und Observer -> Chaos, blicke nicht durch Java Basics - Anfänger-Themen 22
hdi Observer als statische Klasse ? Java Basics - Anfänger-Themen 2
N observer frage Java Basics - Anfänger-Themen 2
N observer Java Basics - Anfänger-Themen 12
G Benötige Hilfe bei Problem mit Observer! Java Basics - Anfänger-Themen 2
E Observer Java Basics - Anfänger-Themen 7
T Verständnisfrage Observer-Pattern Java Basics - Anfänger-Themen 8
Y Observer - notifyObservers(Object arg) Java Basics - Anfänger-Themen 4
M Servlets und Observer Java Basics - Anfänger-Themen 2
S Observer Pattern notifyObserver Java Basics - Anfänger-Themen 6
M Observer Pattern Java Basics - Anfänger-Themen 14
A MVC Observer Pattern Java Basics - Anfänger-Themen 2
L Vererbung Multivererbung und Observable Java Basics - Anfänger-Themen 4
L Obersver - Observable, Bomberman Java Basics - Anfänger-Themen 11
E Interface extends Observable Java Basics - Anfänger-Themen 13
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
E Mysql Update wenn es nicht existiert insert Java Basics - Anfänger-Themen 14
G Konstruktor und update Java Basics - Anfänger-Themen 4
Henri Webservice Delete und Update Methode funktioniert nicht Java Basics - Anfänger-Themen 27
J Threads PrograssBar update während thread Java Basics - Anfänger-Themen 13
S Lost-Update Semaphore Java Basics - Anfänger-Themen 6
K Schlüsselworte Nach Java update findet mdb Datei nicht Java Basics - Anfänger-Themen 6
M Methodenaufruf über SQL UPDATE Java Basics - Anfänger-Themen 8
J JavaFX -> SocketIO -> Thread -> Update Label Java Basics - Anfänger-Themen 13
C JTable update mit MySQL Datenbank Java Basics - Anfänger-Themen 1
J fehler nach windows update Java Basics - Anfänger-Themen 44
G Threads Konstantes Update Java Basics - Anfänger-Themen 1
X Eventservice Probleme nach Update Java Basics - Anfänger-Themen 0
B VAriables update in for-Schelifen Java Basics - Anfänger-Themen 3
L Jar aus Jar Starten lassen (Update Tool) Java Basics - Anfänger-Themen 6
P Update System Java Basics - Anfänger-Themen 16
R Nach Ubuntu-Update: Konsole spuckt bei neu Kompilierten Programmen Fehler aus (BlueJ)(Ubuntu12.04) Java Basics - Anfänger-Themen 11
L Auf herunterfahren des PCs reagieren und Datensatz update machen Java Basics - Anfänger-Themen 15
K Threads jProgressBar update Java Basics - Anfänger-Themen 14
Gugelhupf JDK installieren Fehlermeldung 1336 - Java SDK 7 Update 5 x64 Java Basics - Anfänger-Themen 4
A JDK installieren Java update - neu installieren? Java Basics - Anfänger-Themen 7
R JDK installieren Nach Update auf java 1.7 Connection refused Java Basics - Anfänger-Themen 9
E Programm - Update via Internet? Java Basics - Anfänger-Themen 5
B JDK installieren Java SE Development Kit 6 Update 25 Java Basics - Anfänger-Themen 5
M Update-Ticker... String in Textdatei schreiben und auslesen Java Basics - Anfänger-Themen 5
S MVC Prinzip - update() ? Java Basics - Anfänger-Themen 2
B Problem mit prepareStatement UPDATE Java Basics - Anfänger-Themen 2
M Serializable - Bei Update ältere Daten importieren Java Basics - Anfänger-Themen 14
C JAVA - Einstieg mit Eclipse - Update Sites und Ähnliches Java Basics - Anfänger-Themen 6
S JTree, Problem mit View Update Java Basics - Anfänger-Themen 2
L Java Persistence API - Update Befehl? Java Basics - Anfänger-Themen 5
hdi Fehler beim Model-Update einer JList (DefaultListModel) Java Basics - Anfänger-Themen 3
A update/draw schleife Java Basics - Anfänger-Themen 5
S update wird nicht aufgerufen Java Basics - Anfänger-Themen 9
G JFreeChart und das Update(was nicht klappt). Java Basics - Anfänger-Themen 3
A label update Java Basics - Anfänger-Themen 10
Y JDK 6 Update 5 with Java EE? Java Basics - Anfänger-Themen 2
M Java SQL-Update Java Basics - Anfänger-Themen 6
A per "update" ein Bild Strich für Strich "male Java Basics - Anfänger-Themen 9
S Ein Update System programmieren Java Basics - Anfänger-Themen 27
P Zeichenprogramm-->update() aushebeln Java Basics - Anfänger-Themen 11
S SQL UPDATE in Java "wie schreiben"? Java Basics - Anfänger-Themen 6
E Update JList Java Basics - Anfänger-Themen 13
J Problem bei Update auf Datenbank Java Basics - Anfänger-Themen 2
R JRE 1.5.0 Update 7 Install erkennt nicht Firefox/Netscape Java Basics - Anfänger-Themen 3
M [SOLVED]update() bei MVC Java Basics - Anfänger-Themen 4
M Datenbankabfrage mit UPDATE Java Basics - Anfänger-Themen 4
M Unterschied zwischen J2SE 5.0 Update x und J2SE 1.4.x Java Basics - Anfänger-Themen 4
N Array aus JCheckBox? 1000 if's UPDATE: Spaltennamen auslesen Java Basics - Anfänger-Themen 12
G Update auf Datenbankspalte vom Typ Timestamp mit aktu. Datum Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben