[erledigt] Observable/Observer Beobachter entfernen

Status
Nicht offen für weitere Antworten.

hellcoder

Mitglied
Hallo,

Ich beschäftige mich gerade mit dem Observer-Pattern und stelle mir folgende Frage. Wie entferne ich einen Beobachter am besten von der Liste des Subjekts.

Methode1: KonkreterBeobachter.removeObserver();
Methode 2: konkretesSubjekt.deleteObserver(KonkreterBeobachter);


Code:
public class testObservable {
	public static void main(String[] args) {
		
		Autohaus autohausMueller = new Autohaus();
		Beobachter0 b0 = new Beobachter0(autohausMueller);
		Beobachter1 b1 = new Beobachter1(autohausMueller);

		autohausMueller.setAngebot("Fiat","Punto", 1000);
		autohausMueller.setAngebot("Fiat","Cinquecento", 1300);

		/*Entfernen des Beobachters b1*/
		//autohausMueller.deleteObserver(b1);	//fuktioniert
		b1.removeObserver();					//funktioniert auch
		
		autohausMueller.setAngebot("Fiat","Punto", 1000);
		autohausMueller.setAngebot("Fiat","Cinquecento", 1300);
	}

}


//autohausMueller.deleteObserver(b1); //fuktioniert
b1.removeObserver(); //funktioniert auch


Code:
public class Beobachter1 implements Observer,AnzeigeElement{

	Observable observable;
	private double preis;
	private String modell;
	
	public Beobachter1(Observable obs) {
		this.observable = obs;
		obs.addObserver(this);
	}
	
	@Override
	public void update(Observable o, Object arg) {
		if (o instanceof Autohaus){
			Autohaus autohaus = (Autohaus) o;
			this.modell = autohaus.getModell();
			this.preis = autohaus.getPreis();
			anzeigen();
		}
		
	}

	@Override
	public void anzeigen() {
		System.out.println("Beobachter-1: " + modell + " preis: " + preis);
		
	}
	
	public void removeObserver(){
		observable.deleteObserver(this);
	}

	public void addObserver(){
		observable.addObserver(this);
	}

}


public void removeObserver(){
observable.deleteObserver(this);
}

public void addObserver(){
observable.addObserver(this);
}


Sollten solle Methoden in den Beobachtern implementiert werden ?
Wenn ja, warum gibt das Interface Observer eine Methode update() vor, nicht aber eine Methode remove(), add()


Code:
public class Autohaus extends Observable{

	private double preis;
	private String marke;
	private String modell;
	
	public Autohaus() {	}
	
	
	public void angebotGeändert(){
		setChanged();	//Anzeigen das sich zustand geändert hat. Immer nötig vor notifyObservers()
		notifyObservers(); //Herausziehen-Modell für aktualisierung
	}
	
	/**Neues Angebot veröffentlichen*/
	public void setAngebot(String marke, String modell,double preis){
		this.preis = preis;
		this.marke = marke;
		this.modell = modell;
		angebotGeändert();
	}

	public double getPreis(){
		return this.preis;
	}
	
	public String getModell(){
		return this.modell;
	}
	
	public String getMarke(){
		return this.marke;
	}
	
}


Viele Grüße,

Hellcoder
 
S

SlaterB

Gast
Achtug, blahblah:


zu den Interfaces:

ein Observable muss als solches nach außen erkennbar und bearbeitbar sein,
es ist eindeutig, was genau es ist, welche Observer es hat usw.
add und remove sind essentiell und eindeutig definiert

die einzelnen Observer können da ganz anders ticken,
sie brauchen auf jeden Fall die update-Operation, um vom Observable informiert zu werden, ansonsten muss nicht nach außen bekannt gemacht werden,

während Observable ohne Steuerung von außen keinen Sinn macht,
kann ein Obserser durchaus selbstständig und transparent arbeiten,
niemand muss von außen sagen, auf wen der Observer zu hören oder nicht mehr zu hören hat,
es muss von außen auch nicht sichtbar sein, ob ein Observer vielleicht mehrere Observable abhört,
das Interface ist deshalb ganz leer, nur die update()-Operation ist unumgänglich


--------

zum Vorgehen:

> autohausMueller.deleteObserver(b1);
ist klar, so muss es sein, in beiden Fällen


wer den Aufruf ausführt ist egal,
entweder du hast eine Liste aller Observer und kappst deren Verbingung ohne das die das ahnen,
oder sagst jedem dieser Observer, dass sie ihre Verbindung zum Autohaus kappen sollen,

beides scheint mir seine Berechtigung zu haben, in bestimmten Situationen mehr oder weniger hilfreich zu sein,
musst du mit deinen Observern ausmachen ;)

im Zweifel finde ich
b1.removeObserver();
also b1.meldeDichVonDeinemObservableAb();
schicker, aber auch aufwendiger,
und wie gesagt kann ein Observer auch auf mehrere Observable hören
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R [Erledigt]Fehler beim löschen von einzelnen Buchstaben aus StringBuilder Java Basics - Anfänger-Themen 1
F [Erledigt] ByteBuffer Java Basics - Anfänger-Themen 2
T [Erledigt] Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 0
H [erledigt] Variable initialisiert, aber nicht verfügbar (Schleife) Java Basics - Anfänger-Themen 3
S Problem erledigt! Java Basics - Anfänger-Themen 0
D Datentypen Clipboard Paste per # Erledigt Java Basics - Anfänger-Themen 2
B [Erledigt] Fehlverhalten mit File, FileInput/OutputStream und FileChannel Java Basics - Anfänger-Themen 4
J [Erledigt] Applet Programmierung Java Basics - Anfänger-Themen 4
Tandibur [erledigt] jsp überträgt nicht alle Parameter an Servlet Java Basics - Anfänger-Themen 2
E [Erledigt] Schöner Code zur Reduktion von unzähligen Getter-Methoden Java Basics - Anfänger-Themen 2
P [Positiv Erledigt] Ordner mit Bildern auslesen und diese speichern Java Basics - Anfänger-Themen 7
Strahlungsleck [Erledigt]Ergebnisse des Ausgelesenen Verzweichnis verwerten/benutzen Java Basics - Anfänger-Themen 9
B String vom Server nach Position... (erledigt) Java Basics - Anfänger-Themen 6
M Vererbung [Erledigt] Java Basics - Anfänger-Themen 11
M Formulare ausfüllen / Links aktivieren [erledigt] Java Basics - Anfänger-Themen 3
H Warum bekomme ich einenen noclassdeffounderror ? [erledigt] Java Basics - Anfänger-Themen 7
L Vererbung Multivererbung und Observable Java Basics - Anfänger-Themen 4
L Obersver - Observable, Bomberman Java Basics - Anfänger-Themen 11
G Implementierung des Observer/Observable Patterns - Gut so? Java Basics - Anfänger-Themen 3
G Unterschied Observer&Observable<->java.beans.Prope Java Basics - Anfänger-Themen 4
K Observer Observable update() . Java Basics - Anfänger-Themen 13
E Interface extends Observable Java Basics - Anfänger-Themen 13
G Observable/Observer-Patterns Java Basics - Anfänger-Themen 9
G Observable/Observer update wird nicht ausgeführt 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

Ähnliche Java Themen

Neue Themen


Oben