Guten Tag!
Also... ich habe zwar nur einen Teil von deiner Problembeschreibung verstanden, aber ich hoffe, ich kann dir anhand eines kleinen Beispiels weiterhelfen!
Thema Filme....
Quelle (Werte):
Filmname, Filmlaenge, Filmformat...
+filmname: String
+filmlaenge: long
+filmformat: String
Also... ich habe drei Daten.. die Quelle ist mir vorerst egal
Jetzt kommt mein Interface ins Spiel:
public interface FilmDaten
{
String getFilmName(String deineKriterien)//kann auch ein Selectstatement sein oder
//eine Id oder was auch immer (daher String)...
throws Exception;
long getFilmLaenge(String filmname)
throws Exception;
String getFilmFormat(String filmname)
throws Exception;
}
--> Jetzt habe ich also eine Schnittstelle die unabhängig von der Datenquelle ist.
zB. Eine Datei
/*
* Good Will Hunting
* 432000
* DVD
*/
public class FileFilmDaten implements FilmDaten
{
public String getFilmName(String pfadUndDateiname)
throws IOException
{
File f = new File(pfadUndDateiname);
FileInputStream fIn = new FileInputStream(f);
StringBuffer result = new StringBuffer();
//getFilmname -- > in erster Zeile...
for(int i=fIn.read();i>=0;i=fIn.read())
{
result.append((char)i);
if(i==(int)'\r'||i==(int)'\n') // nächste Zeile...
{
break;
}//end if
}
return result.toString;
}
//... Alle Methoden müssen hier implementiert werden...
}
--> Diese implementierende Klasse kann ich nun verwenden... Aber ich spreche sie über den Namen des Interface an um unabhängig zu bleiben....
public class KeineAhnungWieIchSieNennenSoll
{
public static void main(String[] args)
{
FilmDaten filmDaten = new FileFilmDaten();
//FilmDaten filmDaten = new SQLFilmDaten();
//FilmDaten filmDaten = new StreamFilmDaten();
//FilmDaten filmDaten = new InternetFilmDaten();
//Mit Hilfe des Interfaces kannst du nun viele implementierende Klassen verwenden um
//an die Daten zu kommen....
try
{
String filmName = filmDaten.getFilmName(args[0]);
System.out.println("Name: "+filmName);
System.out.println("Länge: "+filmDaten.getFilmLaenge(filmName));
System.out.println("Format: "+filmDaten.getFilmFormat(filmName));
}
catch(Exception e)
{
System.out.println("Fehler beim Auslesen der Daten....");
e.printStackTrace();
}
}
}
Ich hoffe das hilft
