Also erstelle ich eine Klasse X, die statische Variablen hat, in meiner Hauptfunktion. Ich füge auch einen Beobachter zur Klasse X hinzu. Wenn ich eine neue Instanz der Klasse X in einer anderen Klasse erstelle, werden meine Beobachter nicht mehr benachrichtigt, weil es eine andere Klasseninstanz der Klasse X ist. Wie schaffe ich es, meine Beobachter sowieso, ohne diese Klasse X durch mein ganzes Programm zu bestehen, was ziemlich unmöglich ist? Das Problem besteht darin, dass den neu erstellten Instanzen von ClassX kein Beobachter zugeordnet ist.Verschiedene Klassen des gleichen Typs mit dem gleichen Beobachter, wie zu tun?
/*different file*/
public class CreatingNewX{
public void incrementSomeValue1(){
ClassX x = new ClassX();
x.someMethod();
}
}
/*different file*/
public class observer implements Observer {
private ClassX ClassXValue = null;
public observer(ClassX ClassXValue){
this.ClassXValue = ClassXValue;
}
public void update(Observable obs, Object obj){
if(obs == ClassXValue){
/*do something*/
}
}
}
/*different file*/
public class ClassX extends Observable {
private static int somevalue1;
private static int somevalue2;
private static int somevalue3;
public void someMethod(){
somevalue1++;
setChanged();
notifyObservers();
}
}
/*different file*/
public class Main{
public static void main(String[] args) {
ClassX X = new ClassX();
ClassObserver observer = new ClassObserver(X);
X.addObserver(observer);
}
}
Bitte lesen Sie [MCVE] und bearbeiten Sie Ihre Frage. – Frank
Hinzugefügt ein Beispiel, aber in Wirklichkeit ist es größer und komplizierter als dieses Beispiel. – LifeisHard