Gewusst wie: freigeben von Daten zwischen separaten Klassen in Java

Was ist der beste Weg, um Daten zwischen separaten Klassen in Java? Ich habe eine Reihe von Variablen, die von verschiedenen Klassen in separaten Dateien in unterschiedlicher Weise.
Lassen Sie mich versuchen zu veranschaulichen, eine vereinfachte version meines Problems:

Dies war mein code vor:

public class Top_Level_Class(){
    int x, y;

    //gets user input which changes x, y;
    public void main(){
       int p, q, r, s;
       //compute p, q, r, s
       doA(p,q,r);
       doB(q,r,s);
    }

    public void doA(int p, int q, int r){
       //do something that requires x,y and p, q, r
    }

    public void doB(int q, int r, int s){
       //does something else that requires x, y and q, r, s
    }
}

Nun es sieht wie folgt aus:

public class Top_Level_Class(){
    int x, y;
    SomeClass1a a = new SomeClass1a();
    SomeClass1a b = new SomeClass1b();
    //gets user input which changes x, y;
    public void main(){
       int p, q, r, s;
       //compute p, q, r, s
       a.doA(p,q,r);
       b.doB(q,r,s);
    }

public class SomeClass1a() {  //in its own separate file
    public void doA(int p, int q, int r){
       //do something that requires x,y and p, q, r
    }
}


public class SomeClass1b() {  //in its own separate file
    public void doB(int q, int r, int s){
       //does something else that requires x, y and q, r, s
    }
}

Jedenfalls, sollte ich pass x-und y-jedes mal (wobei x,y sind Variablen gespeichert, die in der helper-Klasse func) ?

 a.set(x,y);
 a.doA(p,q,r);

Meine Idee war es, ein Spezial-container-Klasse, wo die x-und y-gehalten werden. Die top-level-Klasse eine Instanz der Klasse container und ändern Sie x,y mit der set-Methoden.

//in the top level class:
Container c = new Container(x,y);
a.setContainer(c);
b.setContainer(c);

Meine helper-Klassen haben auch eine Instanz des Containers und es würde auf das gleiche Instanz wie in der oberen Ebene. So haben Sie Zugriff auf die gleichen x,y, wie in der oberen Ebene.

Ich würde gerne wissen, ob ich sollte

  • Verwendung der container-Klasse
  • Laden x,y jedes mal in die Unterklassen
  • ?? Einige bessere Methode ??
  • Hier ist die Antwort, leider, es 'hängt'. Programmierer.se könnte ein fruchtbares Ziel für diese Frage.
  • Wenn die innere Klasse nicht statisch ist, dann kann es Zugriff auf übergeordnete Klasse Mitglieder sowie...
  • Es ist nicht eine innere Klasse, wenn es in einer anderen Datei. Und es ist nicht eine Unterklasse, wenn es verlängert nicht die Oberklasse.
  • Ja, Unterklasse war eine schlechte Wortwahl meinerseits. Ich werde dieses Bearbeiten.
InformationsquelleAutor f20k | 2010-12-12
Schreibe einen Kommentar