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();
}
}
}
package org.javaforum.y06.okt.observer;
public interface MyObservable
{
public void updateFoo();
public void updateBar();
}
clemson hat gesagt.:IMHO geth es anders nicht, herauszufinden, von welcher methode aus die updateObservers() aufgerufen wurde. eventuell mittels einem umweg über den stacktrace.
Object ikP = null;
ikP = e.nextElement();
if (ikP instanceof String) {
String oSW = (String) ikP;
}
public void update(Observable obs, Object o) {
if(obs instanceof Observable1) {
...
} else if(obs instanceof Observable2) {
...
} else {
...
}
}
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.