Objektzugriff zur Laufzeit ändern

Status
Nicht offen für weitere Antworten.

aemik

Bekanntes Mitglied
Hallo,

folgendes Problem.
Ich habe eine Klasse die verschiedene Dateizugriffe auf einen XML Datei ermöglicht um Daten zu manipuluieren und eine Klasse die dasselbe mit einer Datenbank tut. Beide haben diesselben Methoden und implementieren deshalb dasselbe Interface. Nun will ich von einer Hauptklasse ( z.B. GUI) zur Laufzeit ändern, welche der beiden Klassen (XML oder DB) gerade verwendet werden soll.
Wie macht man sowas am besten? Nach welchen Stichworten muss ich suchen.

Danke
aemik
 
S

SlaterB

Gast
ich schätze das ist normale Interface-Benutzung, dazu gibts kein Pattern oder so,

der Zugriff auf das Objekt muss auf eine Variable gekapselt sein,
am besten nur per getX() erreichbar,

dann kann man mit setX(X x) dieses x ändern, fertig,

bei nebenläufigen Threads noch über 'synchronized' schlau machen
 

aemik

Bekanntes Mitglied
Danke SlaterB, das klingt sehr einläuchtend, aber mir ist nicht so ganz klar wie ich das programmieren muss.


private Object data;

public void setDataCsv()
{
data = new Data.CsvDAO();
}

public void setDataXml()
{
data = new Data.XmlDAO();
}


funktioniert nicht...
Bitte um Hilfe
aemik
 
S

SlaterB

Gast
> funktioniert nicht...

und was funktioniert daran nicht? ist ja überhaupt kein Zugriff dabei
 
M

maki

Gast
Sieh dir auch mal das Factory Muster an, vielleciht reicht dir das ja.
 

ARadauer

Top Contributor
Code:
private Object data;

nix objekt, vom interface war die rede

und ja es ist genau das strategy pattern, wonach du suchst....
 

aemik

Bekanntes Mitglied
ja gut, also compalieren tut es schon, aber mir ist nicht ganz klar wie jetzt der Zugriff funktioniert.
wie komm ich jetzt an meine Methoden???

Danke,
aemik
 
S

SlaterB

Gast
data.methode()
oder besser
getData().methode();

data muss natürlich vom Typ des Interfaces sein,

und wer sowas nur nach Pattern programmieren kann ist schon arm dran :bae:
 
G

Gast2

Gast
dann hat er wenigstens eine gute struktur drin ;) und kann es auch mal bei bedarf erweitern bevor er anfängt rum zu murxxen :D...
 
M

maki

Gast
SirWayne hat gesagt.:
dann hat er wenigstens eine gute struktur drin ;) und kann es auch mal bei bedarf erweitern bevor er anfängt rum zu murxxen :D...
Das lustige an Mustern ist doch, dass man sie verwendet, ob man es weiss oder nicht.
Ist einfacher etwas zu suchen und zu kommunizieren das einen Namen hat als jedesmal von vorne zu erklären, was es ist und was es macht.
 

aemik

Bekanntes Mitglied
ich denke mir wäre mit einem kurzen Codebeispiel sehr geholfen:

Ich habe ein Interface das von der Xml und Db Klasse implementiert wird. In einer neunen Klasse (z.b. GUI) will ich nun zwischen den bedein zur Laufzeit umschalten können.
 
G

Gast2

Gast
udn wie wird "data" zum Typ des Interfaces?

in dem du NICHT machst
Code:
private Object data;

sondern

Code:
private MyInterface data;

EDIT in der wikipedia seite siehe link oben ist doch ein kurzes codebeispiel drin sogar in JAVA...
 
S

SlaterB

Gast
> udn wie wird "data" zum Typ des Interfaces?

indem du
private InterfaceName data;
schreibst,
aber ok, du solltest dir wohl wirklich vorhandene Beispiele anschauen
 

Landei

Top Contributor
Code:
interface Tier {}

class Hund implements Tier {}

class Katze implements Tier {}

class DosenOeffner{
  private Tier hausTier;

  //so
  public void schaffeKatzeAn(){
     hausTier = new Katze();
  }

  //oder so
  enum Art { KATZE, HUND };
  public void schaffeHausTierAn(Art art) {
     switch(Art) {
       case KATZE : hausTier = new Katze(); break;
       case HUND: hausTier = new Hund(); break; 
     }
  }

  //oder so
  public void schaffeHausTierAn(Class<? implements Tier> clazz) {
    try {
      hausTier = clazz.newInstance();
    } catch(Exception ex) {
       //autsch 
    }
  }
}
 
G

Gast2

Gast
naja mit generics und enum muss er für seinen fall nicht unbedingt arbeiten ;)
 
G

Gast2

Gast
Code:
public  interface IStrategy {
    void execute();
  }
 

public  class XmlDao implements IStrategy {
    public void execute() {
      System.out.println( "Mach deine Xml sachen" );
    }
  }
 
 public class CvsDao implements IStrategy  {
    public void execute() {
      System.out.println( "Mach deine Db sachen" );
    }
  }
 
 public class Context {
    IStrategy strategy;
 
    public void setStrategy(IStrategy strategy)
    {
      this.strategy = strategy;
    }
 
    public void execute() {
      this.strategy.execute();
    }
  }


so ungefähr
 

aemik

Bekanntes Mitglied
super!!! Vielen Dank!!!
Endlich hab ich es verstanden...
mir war die Sache mit dem Interface nicht ganz klar.

Gruß
aemik
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Objektzugriff zwischen disjunkten Klassen Java Basics - Anfänger-Themen 1
V Objektzugriff mit Threads Java Basics - Anfänger-Themen 3
K Objektzugriff Java Basics - Anfänger-Themen 4
J Problem mit Objektzugriff über GUI Java Basics - Anfänger-Themen 3
S Gezielter Objektzugriff Java Basics - Anfänger-Themen 4
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
E Alter (Laufzeit) berechnen Java Basics - Anfänger-Themen 11
W Array zur Laufzeit bearbeiten? Java Basics - Anfänger-Themen 31
D Objekterzeugungen mit zur Laufzeit variierenden Attributen Java Basics - Anfänger-Themen 7
J GroupLayout zur Laufzeit erweitern Java Basics - Anfänger-Themen 1
B Übersetzungszeit und Laufzeit Java Basics - Anfänger-Themen 3
amgadalghabra Die vier Sortieralgorithmen die durchschnittliche Laufzeit in Millisekunden Java Basics - Anfänger-Themen 37
U Dijkstra Algorithmus Laufzeit Java Basics - Anfänger-Themen 3
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
L Anzahl der Elemente key in einem Array mit log(N) Laufzeit Java Basics - Anfänger-Themen 4
S Interpreter-Fehler Endlosschleife zur Laufzeit aber warum? Java Basics - Anfänger-Themen 15
J JavaFX Label,Button zur Laufzeit Java Basics - Anfänger-Themen 30
H Laufzeit Java Basics - Anfänger-Themen 11
C Laufzeit eines Sortier-Algorithmus ermitteln Java Basics - Anfänger-Themen 4
L Objekt Typ zur Laufzeit ermitteln Java Basics - Anfänger-Themen 1
J Datei im Package zur Laufzeit editieren Java Basics - Anfänger-Themen 1
M Quicksort Laufzeit langsam Java Basics - Anfänger-Themen 5
M Quicksort Laufzeit langsam Java Basics - Anfänger-Themen 0
R Objekte zur Laufzeit in Schleife erzeugen und in ArrayList ablegen Java Basics - Anfänger-Themen 4
C Laufzeit von Stack Operation Java Basics - Anfänger-Themen 5
D Laufzeit von einfachem Programm Java Basics - Anfänger-Themen 21
J Laufzeit berechnen/Laufzeitanalyse Java Basics - Anfänger-Themen 2
M Input/Output Datei in Laufzeit-JAR kopieren Java Basics - Anfänger-Themen 6
V Laufzeit Java Basics - Anfänger-Themen 23
G Laufzeit/ O/Θ-Notation einer Treeset Methode Java Basics - Anfänger-Themen 0
W Klassen [GELÖST] Objekte während der Laufzeit mit neuen veränderten Werten beliebig oft initialisieren Java Basics - Anfänger-Themen 2
M Erste Schritte Code zur Laufzeit ändern lassen Java Basics - Anfänger-Themen 3
C Klassen aus einem Package ermitteln und per Laufzeit laden Java Basics - Anfänger-Themen 17
J Objekte zur Laufzeit erzeugen und direkt verwenden Java Basics - Anfänger-Themen 9
M Möglich? Methode aufrufen deren Bezeichner zur Laufzeit durch einen überg. String festgelegt wird Java Basics - Anfänger-Themen 3
K JLabel zur Laufzeit dynamisch erzeugen Java Basics - Anfänger-Themen 7
M Methoden miteinander verbinden (Laufzeit) Java Basics - Anfänger-Themen 6
llabusch Interface Layout eines Labels während der Laufzeit ändern Java Basics - Anfänger-Themen 0
Streeber reale Laufzeit meines Programms ausgeben Java Basics - Anfänger-Themen 1
D Algorithmus zu gegebener Laufzeit implementieren Java Basics - Anfänger-Themen 1
R Variablen Datentyp erst während Laufzeit festlegen Java Basics - Anfänger-Themen 6
S Klassentyp zur Laufzeit ändern? Java Basics - Anfänger-Themen 3
M Laufzeit und O-Notation Java Basics - Anfänger-Themen 3
M Variablen Variable zur Laufzeit erzeugen Java Basics - Anfänger-Themen 3
A Laufzeit von verschachtelter for-Schleife Java Basics - Anfänger-Themen 4
B Variablen Instanz von Enum zur Laufzeit erstellen und zuweisen Java Basics - Anfänger-Themen 2
L Panels zur Laufzeit ändern Java Basics - Anfänger-Themen 2
A Laufzeit Java Basics - Anfänger-Themen 11
M Methodennamen zur Laufzeit ausgeben Java Basics - Anfänger-Themen 5
F JTable zur laufzeit füllen Java Basics - Anfänger-Themen 7
P GUI - Layout per Laufzeit erstellen/verändern? Java Basics - Anfänger-Themen 6
N Variablen VariableNamen auswirkung auf Laufzeit Java Basics - Anfänger-Themen 3
R Rekursionsformel für Laufzeit von Algorithmus Java Basics - Anfänger-Themen 3
J Erste Schritte Zinseszinsberechnung Ermittlung Laufzeit Java Basics - Anfänger-Themen 3
S Laufzeit bei rekursiver Methode messen Java Basics - Anfänger-Themen 6
S Erste Schritte Weihnachtsbaum / Laufzeit O(n) Java Basics - Anfänger-Themen 9
E Laufzeit verkürzen Java Basics - Anfänger-Themen 14
A Threads Zur Laufzeit hinzufügen/entfernen Java Basics - Anfänger-Themen 10
D Classpath compiler zur Laufzeit aufrufen & lib-classpath Java Basics - Anfänger-Themen 6
E Input/Output Inputstream während der Laufzeit füllen Java Basics - Anfänger-Themen 2
B Laufzeit berechnen? Java Basics - Anfänger-Themen 7
S Klasse bei Laufzeit laden? Java Basics - Anfänger-Themen 2
B Klassen Objekte während der Laufzeit dynamisch anlegen Java Basics - Anfänger-Themen 8
K jButton zur Laufzeit hinzufügen Java Basics - Anfänger-Themen 22
D globale Variablen zur Laufzeit erzeugen Java Basics - Anfänger-Themen 5
A Frage zur Laufzeit / Optimierung Java Basics - Anfänger-Themen 2
N Laufzeit in Nanosekunden - in Minuten umrechnen Java Basics - Anfänger-Themen 6
alderwaran objekthierarchie darstellen während der laufzeit Java Basics - Anfänger-Themen 2
G Objekte von Klassen die erst zur Laufzeit bekannt sind erstellen Java Basics - Anfänger-Themen 6
B Frage zur Laufzeit Java Basics - Anfänger-Themen 2
Luk10 Variablen zur Laufzeit ändern! Java Basics - Anfänger-Themen 7
G JAR zur Laufzeit nachladen Java Basics - Anfänger-Themen 2
S JDialog resize zur Laufzeit PROBLEM!!! Java Basics - Anfänger-Themen 5
E Pfad zu einem gif-Bild wird zur Laufzeit nicht gefunden Java Basics - Anfänger-Themen 5
A Applet Bild zu laufzeit hinzufügen Java Basics - Anfänger-Themen 4
C Frage zu Syntax-,Laufzeit-, Semantikfehler Java Basics - Anfänger-Themen 3
R JVM zur laufzeit manipulieren? Java Basics - Anfänger-Themen 4
S Zur Laufzeit Strings Compilieren Java Basics - Anfänger-Themen 5
A Objekte während der Laufzeit erstellen Java Basics - Anfänger-Themen 3
G Text eines JLabels zur Laufzeit ändern Java Basics - Anfänger-Themen 4
M Laufzeit von Programmen Java Basics - Anfänger-Themen 3
A Jar-Archive zur Laufzeit erstellen Java Basics - Anfänger-Themen 3
G Zu Laufzeit von Tastatur einlesen Java Basics - Anfänger-Themen 11
E Einen String auch über die Laufzeit hinaus speichern Java Basics - Anfänger-Themen 4
A Neue Objekte zur Laufzeit erzeugen Java Basics - Anfänger-Themen 5
D Locale zur Laufzeit über JComboBox laden? Java Basics - Anfänger-Themen 17
S Ausdruck zur Laufzeit auswerten Java Basics - Anfänger-Themen 10
G Anzahl Textfelder zur Laufzeit verändern. Java Basics - Anfänger-Themen 4
Z Benutzerdaten währen Laufzeit speichern Java Basics - Anfänger-Themen 2
K JProgressbar, zur laufzeit steuern Java Basics - Anfänger-Themen 7
V Vektoren zur Laufzeit erzeugen Java Basics - Anfänger-Themen 7
N zur Laufzeit gefundene class-Datei verwenden - wie geht das? Java Basics - Anfänger-Themen 2
G Look and Feel zur Laufzeit ändern Java Basics - Anfänger-Themen 2
A Text einer JComboBox während der Laufzeit ändern ? Java Basics - Anfänger-Themen 4
K Chart zur Laufzeit erstellen und aktualisieren Java Basics - Anfänger-Themen 2
G JAR: Externe Dateien zur Laufzeit aufrufen Java Basics - Anfänger-Themen 12
C Variablen zur Laufzeit erstellen? Java Basics - Anfänger-Themen 14
B Warum hat dieser einfache Algorithmus lineare Laufzeit? Java Basics - Anfänger-Themen 3
M JButton zur laufzeit erzeugen/ löschen Java Basics - Anfänger-Themen 3
B Laufzeit und Übersetzungszeit Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben