Verbindungsdaten an Subklasse übergeben?

Jesterhead

Mitglied
Hallo Freunde,

ich habe ein Problem und weiß nicht genau ob ich mir die optimale Lösung ausgedacht habe.


Ich habe eine Hauptklasse. Darin sind derzeit globale private Variablen enthalten, die über eine Methode gefüllt werden. Diese Methode holt Verbindungsdaten für einen FTP Zugang aus einer Datenbank.

Nun habe ich mittlerweile zwei Subklassen, die ebenfalls die Verbindungsdaten benötigen.

Wie soll ich nun auf die daten der Vaterklasse zugreifen? Geht das überhaupt? Oder muss ich die Daten in Form eines Konstruktors an die Subklassen übergeben?

Wäre sehr dankbar für ein paar Tipps.

Hier ein Codebeispiel:

Java:
public class DoSomething {
  private String host;
  private String port;
  private String user;
  private String password;

    getFtpDataAndWritToGlobalVars();

    public class Test1 {
      //needs FTP Data
    }

    public class Test2 {
      //needs FTP Data
    }
}
 
Zuletzt bearbeitet:
Du kannst das einmal über den Konstruktor machen, aber auch über setter oder du gibst den Kindklassen eine Instanz der Vaterklasse mit.
 
Wie kann ich den Kindklassen eine Instanz der Vaterklasse mitgeben? Könntest du mir einen Codeschnipsel zeigen? Mit dem Konstruktor ist klar. Ich würde es gerne verstehen um einen Vergleich ziehen zu können. Die bessere Variante wird bevorzugt... ;-)
 
Der Konstruktor sähe so aus:
Java:
Vater vater=null; //leere Instanzvariable von Vater
public kind(Vater vater){
   this.vater=vater//leere Instanzvariable wird gefüllt
}

Der Aufruf wäre so:

Java:
Kind kind=new Kind(this); //die aufrufende Klasse wird als Parameter übergeben
 
Ok, vielen Dank.

Denke ich werde die Verbindungsdaten in einem eigenen Objekt unterbringen und dieses Objekt an die Kindklasse übergeben.

Denke das ist die eleganteste Variante...

Oder? So sind die Daten auch thematisch getrennt...
 
Eleganz hängt immer von Interpretation ab 😉 Ich fände es elegant, wenn es ein Interface "FTPProvider" oder so gäbe, das getter-Methoden für die benötigten Daten hat. Ob dies nun von der Klasse "DoSomething" oder einen eigenen Klasse implementiert wird, hängt davon ab, ob es zur Aufgabe von DoSomething passt - wichtig wäre mir jedenfalls, dass die Kindklasse nur gegen das Interface implementiert ist und nicht gegen die Vaterklasse. Sonst zieht man sich Abhängigkeiten in den Code, die man gar nicht braucht. Mit dem Interface bleibt man flexibel und kann später beliebig umentscheiden, welche Klasse die Daten letztendlich speichert - der Code der Kindklasse muss jedenfalls nie wieder angepasst werden, weil das Interface ja gleich bleibt.
 
Zuletzt bearbeitet:

Zurück
Oben