dynamische Datenbankanbindung

bin-doph

Grünschnabel
Hi,

ich habe eine kleine Anwendung der ich als Feature die Auswahl verschiedener Datenbankbackends hinzufügen möchte, im moment erstmal csv und xml. Ich bin noch relativ frisch in java, daher suche ich jetzt erstmal den richtigen Ansatz. Da unter Umständen später noch zusätzliche Schnittstellen leicht hinzugefügt werden sollen, dachte ich daran ein Interface, eine Hauptklasse die die Auswahl trifft welche Schnittstelle verwendet werden soll und diverse Unterklassen basierend auf dem Interface, die die Funktionen halten. Was mich jetzt allerdings erstmal etwas verwirrt ist, wie ich die Funktionen dann richtig überlade bzw. ist mein Gedankengang überhaupt richtig?

danke schon mal vorab, cheers
bd
 
Hallo,

soweit ist dein Ansatz schon richtig. Das Interface sollte Methoden enthalten, mit dem man Werte Abfragen und speichern kann. Diese Methoden musst du dann in den einzelnen Klassen ausprogrammieren, sobald du das Interface implementiert hast.

Falls deine Fragen nicht geklärt sein sollten, frag bitte nochmal etwas genauer nach.

MFG

zEriX
 
Hi,

danke für die Antwort. Das Interface sieht auch dementsprechend aus (load(), save(), get(), set() was ich genau brauch kann ich ja noch nachimplementieren). Im moment ist mein grösstes Verständnisproblem wohl wie ich das alles in der Hauptklasse verpacke. Ich versuchs mal zu skizzieren

Code:
//testDatabase.java
public class testDatabase {

  public testDatabase {
    if (/* Wenn Datenbanktyp csv gewünscht ist */) {
      testDatabaseCSV database = new testDatabaseCSV();
    }
    else if ( /* Wenn Datenbanktyp xml gewünscht ist */) {
      testDatabaseXML database = new testDatabaseXML();
    }
    else { /* foo */ }
  }

}

// bsp. testDatabaseCSV.java
public class testDatabaseCSV extends DatabaseInterface {

   public void load(){};
   public void save(){};

}

Ich bin der Ansicht das der Typ der Variable "database" eigentlich immer gleich sein müsste, damit ich von der Klasse testDatabase ein Objekt der Klasse "testDatabase" zurückliefern kann :confused: ich bin bissle konfus gerade und werde wohl erstmal was zu Mittag essen, hoffe ich konnte etwas genauer darlegen wo ich hin will.

grüße
bd
 
Wenn du ein Interface hast kannst du das so machen.

Code:
DasInterface instance = new DieKlasse();
DasInterface instance = new DieAndereKlasse();

MFG

zEriX
 
Zurück