Hallo zusammen,
nach langer langer Suche im Internet habe ich mich entschlossen meine Frage hier zu posten. Meine Java- und OO-Kenntnisse sind nicht gerade die besten, deshalb verzeiht mir, falls ich irgendwo einen falschen Fachausdruck nutze oder einen total dummen Ansatz habe.
Also zu meinem Problem.
Ausgangssituation:
Ich habe mehrere Klassen die alle von einer Oberklasse namens "Modul" erben. Nun ist es so, dass all diese Unterklassen von Modul, (welche teilweise unterschiedliche Attribute besitzen), bzw deren Instanzen in einer Datenbank gespeichert, abgerufen, gelöscht, geupdated und so weiter, werden sollen.
Und da habe ich gedacht, dass es ganz vielleicht irgendein Pattern oder sonstiges dazu gibt, dass ich nicht in jeder Unterklasse die Methoden (update(), insert() und soweiter) haben muss um auf die Datenbank zuzugreifen. Also dass ich die irgendwie abstrahieren kann.
Bisheriger Ansatz:
Ich habe ein Interface DatabaseHandlings
Dann habe ich eine Klasse "SimpleDataBaseHandling" welches das Interface implementiert
So dann natürlcih meine Klasse Modul
und hier noch als Beispiel die Unterklasse Behälter
Ziel der ganzen Sache:
Ich will in keiner meiner Unterklassen, wie beispielsweise Behälter, die "Datenbankzugriffsmethoden" implementieren. Die Klasse "SimpleDatabaseHandling" ist nur da, dass ich eventuell falls mal eine andere Datenbank ins Spiel kommen sollten ich einfach einer andere Klasse schreiben kann, die das Interface DatabaseHandling implementiert.
Achja obiger Code ist nicht ganz vollständig, es fehlen beispielsweise die Parameter der Methoden, denn an denen scheitert eigentlich mein ganzes Vorhaben. Da jede Unterklasse von Modul andere Attribute aufweist, weiss ich nicht so ganz wie ich dann die Datenbankabfragen in "SimpleDatabaseHandling" implementiere.
So also ich hoffe ich konnte einigermaßen rüberbringen was ich will :>
Gruß
Marius
nach langer langer Suche im Internet habe ich mich entschlossen meine Frage hier zu posten. Meine Java- und OO-Kenntnisse sind nicht gerade die besten, deshalb verzeiht mir, falls ich irgendwo einen falschen Fachausdruck nutze oder einen total dummen Ansatz habe.
Also zu meinem Problem.
Ausgangssituation:
Ich habe mehrere Klassen die alle von einer Oberklasse namens "Modul" erben. Nun ist es so, dass all diese Unterklassen von Modul, (welche teilweise unterschiedliche Attribute besitzen), bzw deren Instanzen in einer Datenbank gespeichert, abgerufen, gelöscht, geupdated und so weiter, werden sollen.
Und da habe ich gedacht, dass es ganz vielleicht irgendein Pattern oder sonstiges dazu gibt, dass ich nicht in jeder Unterklasse die Methoden (update(), insert() und soweiter) haben muss um auf die Datenbank zuzugreifen. Also dass ich die irgendwie abstrahieren kann.
Bisheriger Ansatz:
Ich habe ein Interface DatabaseHandlings
Java:
public interface DatabaseHandling {
/**
* liefert alle Einträge, Beispielsweise alle Behäter von Behälter
*/
public ArrayList<String> getAllElements();
// speichert das aktuelle Objekt in der Datenbank
public void save();
// aktualisiert das aktuelle Objekt in der Datenbank
public void update();
}
Dann habe ich eine Klasse "SimpleDataBaseHandling" welches das Interface implementiert
Java:
public class SimpleDatabaseHandling implements DatabaseHandling{
private DBConnection dbcon = DBConnection.
getDBConnection("jdbc:mysql://localhost/mydb", "root", "");
public ArrayList<String> getAllElements() {
//Code
}
public void save() {
//Code
}
public void update() {
//Code
}
}
So dann natürlcih meine Klasse Modul
Java:
public abstract class Modul {
DatabaseHandling databaseHandling;
public ArrayList<String> getAllElements() {
return databaseHandling.getAllElements();
}
public void save() {
databaseHandling.save();
}
public void update() {
databaseHandling.update();
}
}
und hier noch als Beispiel die Unterklasse Behälter
Java:
public class Behaelter extends Modul{
private String bezeichnung;
private double laenge;
private double breite;
private double hoehe;
public Behaelter() {
databaseHandling = new SimpleDatabaseHandling();
}
}
Ziel der ganzen Sache:
Ich will in keiner meiner Unterklassen, wie beispielsweise Behälter, die "Datenbankzugriffsmethoden" implementieren. Die Klasse "SimpleDatabaseHandling" ist nur da, dass ich eventuell falls mal eine andere Datenbank ins Spiel kommen sollten ich einfach einer andere Klasse schreiben kann, die das Interface DatabaseHandling implementiert.
Achja obiger Code ist nicht ganz vollständig, es fehlen beispielsweise die Parameter der Methoden, denn an denen scheitert eigentlich mein ganzes Vorhaben. Da jede Unterklasse von Modul andere Attribute aufweist, weiss ich nicht so ganz wie ich dann die Datenbankabfragen in "SimpleDatabaseHandling" implementiere.
So also ich hoffe ich konnte einigermaßen rüberbringen was ich will :>
Gruß
Marius