F
frager
Gast
hallo, ich möchte mir gern einen eigenen observer basteln. beim observer pattern gibt es ja immer 2 dinge, nämlich den observer selbst und dann die stelle, ander sich daten ändern können, also eine 1:n beziehung. ich habe in meiner anwendung ein fenster (jframe) welches den nutzer einstellungen vornehmen lässt, welche sich dann auf 2 andere fenster auswirken. da wäre das ja ne gute sache mit dem observer...in diesem fall 1:2. ich hab mir also erstmal ein interface für den observer gebaut:
und dann eins für das subject, also die stelle, wo sich daten ändern könnten:
so weit so gut. jetzt implementiere ich in meinen einstellungen des subject interface, und zwar so:
dann in dem fenster, wo sich was ändern soll, implementiere ich jeweils das observer interface und überschreibe die updatemethode.
jetzt aber meine frage. ich müsste ja diese komponente jetzt erstmal registrieren, was ja mit registerObserver(this) gehen würde. aber wenn ich jetzt sowas mache wie
dann geht ja an der stelle das fenster mit den einstellungen auf....wie mach ich das aber sonst?
danke
Code:
public interface Observer {
public void update(boolean clickableLinks);
}
und dann eins für das subject, also die stelle, wo sich daten ändern könnten:
Code:
public interface Subject {
public void registerObserver(Observer o);
public void removeObserver(Observer o);
public void notifyObservers();
}
so weit so gut. jetzt implementiere ich in meinen einstellungen des subject interface, und zwar so:
Code:
public class AppProperties extends JFrame implements Subject{
//methoden dann überschreiben
}
dann in dem fenster, wo sich was ändern soll, implementiere ich jeweils das observer interface und überschreibe die updatemethode.
Code:
public class MyApp extends JFrame implements Runnable, Observer{
//update überschreiben, um werte zu setzen, die vom subject kommen.
}
jetzt aber meine frage. ich müsste ja diese komponente jetzt erstmal registrieren, was ja mit registerObserver(this) gehen würde. aber wenn ich jetzt sowas mache wie
Code:
AppProperties app = new AppProperties();
dann geht ja an der stelle das fenster mit den einstellungen auf....wie mach ich das aber sonst?
danke