2016-04-10 9 views
0

Abfrage - Ich würde gerne wissen, wie ich mit dem Code fortfahren soll, wenn ich die Informationen in der Observer Klasse für Methoden in anderen Klassen verfügbar machen muss.Java Observer Pattern - Informationen an andere Klassen übergeben - Methoden

Der Beobachter erhält die Updates von Observable in Form von Object []. Ich bin in der Lage, die Ausgabe auf Konsole zu drucken, aber nicht klar, wie diese Informationen für andere Klassen verfügbar gemacht werden.

Ich versuchte durch Erstellen einer Methode getInfo im Observer, die das Object [] & zurückgibt und dann den Observer in der Klasse instanziiert, wo ich die Informationen brauche, indem ich die Methode getInfo aufruft. Aber ich bekomme eine Nullzeiger-Ausnahme.

-Code - Observer

private String car; 
private CarModel carModel; 

public broadcastObserver(Observable observable){ 
    observable.addObserver(this); 
} 

@Override 
public void update(Observable observable, Object arg) { 
    Object[] subjectMessage = (Object[])arg; 
int i = 0; 
    for (Object o : subjectMessage) { 
     switch (i){ 
      case 0: 
       car = (String)o; 
       i++; 
       break; 
      case 1: 
       carModel = (CarModel) o; 
       i++; 
       break; 
     } 
    } 
} 
public Object[] getObserverFeed(){ 
    Object[] observerFeed = new Object[]{car,carModel}; 
    return observerFeed; 
} 

-Code - Klasse Methode, wo Informationen benötigt werden

broadcastObserver bO = new broadcastObserver(); 

Object[] feed = bO.getObserverFeed(); 
+0

Bitte poste deinen Code, anstatt eine Geschichte darüber zu erzählen. :) –

Antwort

1

Umkehren des Datenflusses: statt von dem Beobachter zu Pull info versuchen mit Get-Methoden, verwenden Sie den Beobachter zu Push es, wo es benötigt wird.

+0

danke, kannst du mir in die richtung zeigen, wie das geht. Ich habe ziemlich viel darüber recherchiert, aber bisher konnte ich es nicht herausfinden. Entschuldigungen sind ziemlich neu. – iCoder

+0

Im Wesentlichen: was auch immer Sie mit 'bO.getObserverFeed()' tun möchten, verschieben Sie es auf die 'update' Methode. – Joni