Hallo liebes Java-Forum,
ich würde gerne eine Observer-Observable Struktur anlegen.
Es gibt eine abstrakte Klasse Observable und ein Interface Observer<T>. Mal ein Codebeispiel:
Nun möchte ich, dass alle Klassen, die Observiert werden können, Observable erweitern, und alle Klassen, die observieren können, Observer erweitern. Nun möchte ich jedoch, dass eine Observer-Klasse verschiedene Observable-Klassen observieren kann. Hier wieder ein Code-Beispiel:
Allerdings ist die mehrfache Implementierung eines Interface nicht zulässig (auch mit generischem Typ).
Nun würde ich gerne wissen, wie ich mein Problem effizient lösen kann.
Ein eigenes Interface zu entwerfen dass dann ein bestehendes erweitert um so eine weitere update-Methode hinzuzufügen bietet sich nicht an! Die Anzahl der zu observierenden Klassen ist einfach zu groß und unterschiedlich.
Ich warte auf konstruktive Beiträge
I.Haffner
ich würde gerne eine Observer-Observable Struktur anlegen.
Es gibt eine abstrakte Klasse Observable und ein Interface Observer<T>. Mal ein Codebeispiel:
Code:
public abstract class Observable {
private Set<Observer> observers;
public Observable() {
observers = new HashSet<Observer>();
}
public void addObserver(Observer observer) {
observers.add(observer);
}
public void notifyObservers() {
for(Observer o : observers) {
o.update(this);
}
}
}
public interface Observer<T> {
void update(T o);
}
Nun möchte ich, dass alle Klassen, die Observiert werden können, Observable erweitern, und alle Klassen, die observieren können, Observer erweitern. Nun möchte ich jedoch, dass eine Observer-Klasse verschiedene Observable-Klassen observieren kann. Hier wieder ein Code-Beispiel:
Code:
public class MyObserver imiplements Observer<ClassA>, Observer<ClassB> {
public void update(ClassA o) {
}
public void update(ClassB o) {
}
}
Allerdings ist die mehrfache Implementierung eines Interface nicht zulässig (auch mit generischem Typ).
Nun würde ich gerne wissen, wie ich mein Problem effizient lösen kann.
Ein eigenes Interface zu entwerfen dass dann ein bestehendes erweitert um so eine weitere update-Methode hinzuzufügen bietet sich nicht an! Die Anzahl der zu observierenden Klassen ist einfach zu groß und unterschiedlich.
Ich warte auf konstruktive Beiträge
I.Haffner