Listener Oberserver Pattern

crossit

Grünschnabel
Hallo zusammen,

sitze gerade an einer kleinen Aufgabe und weiß leider nicht wie man die einzelnen Elemente miteinander verbindet....

Unzwar ich habe 3 Klassen. In der ersten Klasse füge ich den Listener hinzu und die zweite Klasse liegt als Interface und die dritte soll ich die Methden implementieren...

Mir ist klar wie die Methode funktioniert jedoch nicht wie ich alle die Klassen miteinander intergarieren sollen...
1. Klasse
Code:
transient final private List<Listener> stateListeners = new LinkedList<>();
	

public void addListener(Listener listener) {
		stateListeners.add(listener);
			
	}
	
	
	public void removeListener(Listener listener) {
		stateListeners.remove(listener);
	}

2. Interface
Code:
public interface Listener {
	
	void alleVorschlaege();
	
	
}

3. Event
Code:
public class Show implements Listener {

@Override
	public void alleVorschlaege(){}

}

kann mir jemand erklären, wie das Listener Observer Pattern funktioniert?
Ich habe es so verstanden, dass es eine Klasse gibt, die als Ereignisauslöser dient und quasi Interessenten...
In dem Beispiel wäre doch mein Interface und die Klasse Show meine Ereignisauslöser und der Interessent die 1 Klasse oder nicht?
Wie kann ich nun mein Ereignis aus der Klasse Show per Interface an die 1 Klasse weitergeben?
 
In dem du im Interface eine Referenze auf die erste Klasse Per Methode setzt

Java:
public interface Listener {
    
    void alleVorschlaege();
    void setFarbik(Klasse1 obj);  
    
}

und dann in der ersten Klasse:
Java:
transient final private List<Listener> stateListeners = new LinkedList<>();
    
 
public void addListener(Listener listener) {
        listener.setFabrik(this);
        stateListeners.add(listener);
            
    }
    
    
    public void removeListener(Listener listener) {
        stateListeners.remove(listener);
    }

Nun weiß show an welche Klasse ein Update geschickt werden soll.

Gruß
Fabian
 
Zurück