Welches Design pattern

richi_

Mitglied
Hallo @ all,

ich wollte wissen ob es ein Design pattern für folgendes Szenario gibt.

Ich habe mehrere Klassen die ein bestimmtes Objekt immer wieder benötigen. Diese Objekt erzeuge ich in der main-methode und übergebe die Instanz einem anderen Klasse. Diese verwendet es und übergibt es weiter. Und so geht es immer weiter.


Also ich finde diese (meine) Lösung einfach nicht schön. Soll ich eine statische Klasse mit einer Membervariable dieses Objektes besitzt.

Ich hoffe diese Beschreibung ist nicht zu konfus.

Folgendes Beispiel fällt mir auf die schnelle ein. Ich lege einen XMLWriter in der Main-Methode an. Übergebe diesen Writer an eine Klasse A. Diese Klasse A schreibt etwas in ein XML File und ruft dann eine Methode der Klasse B auf und übergibt dieser Methode wieder den XMLWriter usw.

Danke schon mal im voraus
mfg richi
 

Blindxantos

Aktives Mitglied
Hallo.
Beim Singleton-Pattern greifst du immer auf ein Objekt zurück (ich kenne es bis jetzt nur bezüglich der Connection zu einer Datenbank).
Les' dich halt mal kurz ein, dann wirst du schon sehen ob es was für dich ist.

LG
 

richi_

Mitglied
Hallo Blindxantos,

danke für deine schnelle Antwort.

Ich habe mir das Singleton-Pattern gerade angeschaut. Ich möchte kurz sichergehen, dass ich es verstanden habe.
Also jede Klasse die dieses Objekt benötigt, legt sich ein neues Objekt an und durch das Singleton-Pattern wird gewährleistet, dass es das gleiche ist. Und dieser Stil ist sozusagen "schöner" als wenn man das Objekt hin und her schupft.

mfg richi
 

diggaa1984

Top Contributor
das singlepattern ist ja einigermaßen verrufen :)

aber mit dem "neu anlegen" hast du dich wohl nur ungeschickt ausgedrückt :) .. es wird ja genau einmal erzeugt und alle anderen klassen holen sich diese Instanz von der Klasse des Singleton. Dabei muss sichergestellt werden, dass zB. bei Multi-Threaded-Umgebungen auch nur exakt ein Objekt erstellt wird .. je nach Code kann man da auch was falsches erzeugen und glaube es gäbe nur 1 Objekt :)
 

Naaram

Mitglied
Also für das XMLWriter Beispiel passt das Singleton-Pattern sicher nicht. Wenn du Code refactored haben willst, und du weisst nicht, was du machen sollst, solltest du lieber den Code posten.

Speziell für XML gibt es ja auch zahlreiche Bibliotheken
 

richi_

Mitglied
Hallo ihr beiden und danke für eure Hilfe.

Ich mache kein refactoring sondern versuche mein erstes großes Projekt zu realisieren. Aber du hast recht, ist wahrscheinlich so einfacher. Wahrscheinlich hätte ich es gleich machen sollen. Tut mir leid.
Also ich werde Auszüge meines Codes mal posten.

Also es geht darum das ich Daten von eigentlich zwei XML-Files in ein Excel-File packen soll. Später sollen daraus mal Diagramme erzeugt werden.

Also in der Mainklasse lege ich mal mein Excel-File an:
Java:
workbook = Workbook.createWorkbook(file, wbSettings);

Im Anschluss dann übergebe ich mein Workbook meiner Klasse FetchXML();
Java:
FetchXML x = new FetchXML("location");
x.read(workbook);

FetchXML.read() wiederum liest dann Zeile für Zeile ein. Wenn es auf ein START_ELEMENT trifft
Java:
if(event.getEventType() == XMLStreamConstants.START_ELEMENT)

folgt eine case wo ich abfrage, bist du eine Person, Gruppe, usw. und je nachdem ob es eine Person, Gruppe usw. ist wird ein bestimmtes Objekt erzeugt.

Wenn es sich um eine Person handelt
Java:
Person p = new Person();
p.read(workbook);

Person, Gruppe usw. führen bestimmte Formatierungen durch und schreiben dann in das Excel-File. In späterer Folge soll ein Eintrag im XML File noch mit einer Datenbank abgeglichen werden und dann soll erst das Schreiben in die Excel-Tabelle erfolgen.


Mein Problem ist ich übergebe halt alle meinen Klassen das workbook. (leider sind es noch mehr Klassen :oops:) Jede Klasse macht was spez. mit dem workbook aber mir gefällt das herumschupfen nicht und ich vermute mal ich denke zu prozedural.

Ich hoffe ich habe es halbwegs verständlich rübergebracht.

mfg richi
 

Naaram

Mitglied
Ich weiss nicht, ob das zu fortgeschritten ist, aber du kannst das auslesen von XML und die Programmlogik mithilfe von einem XML-Binding, wie XStream oder JAXB trennen. Wenn man sich da erstmal reingefuchst hat ist es sehr viel einfacher, als die Daten per Hand mittels SAX oder DOM auszulesen. Für Anfänger ist es aber vielleicht zuviel.
 

richi_

Mitglied
Hallo Naaram,

danke für deine Antwort. Ich hab bis jetzt noch keine Erfahrung damit, aber man lernt ja nur etwas, wenn man es ausprobiert.

Ich habe auf jeden Fall jetzt den Singleton-Pattern Ansatz umgesetzt, damit ich das Workbook nicht immer mitgebe.

Ich werde mir in den nächsten Tagen XStream oder JAXB anschauen und versuchen eines der beiden zu verwenden.

Also ich bin sicher in den nächsten Tagen werde ich wieder einen neuen Beitrag erstellen ;)

Diesen werde ich nun schließen.

Danke an alle

mfg richi
 

Crian

Top Contributor
Singletons haben aber einige Probleme und sollten nur eingesetzt werden, wenn man sicher gehen will, dass etwas nur xakt einmal vorhanden ist, und nicht um aus Bequemlichkeit "globale Variablen" zu nutzen.

Das läuft dem OOP dann nämlich wieder entgegen.
 
M

maki

Gast
Ich habe mehrere Klassen die ein bestimmtes Objekt immer wieder benötigen. Diese Objekt erzeuge ich in der main-methode und übergebe die Instanz einem anderen Klasse. Diese verwendet es und übergibt es weiter. Und so geht es immer weiter.
Das nennt man "Depedency Injection", aber eben ohne Framework.

Und dieser Stil ist sozusagen "schöner" als wenn man das Objekt hin und her schupft.
Nö, ist er nicht.

Wenn du kein sauberes Design hast und überall ein und dasselbe Objekt referenzierst, dann macht es ein Singleton nicht besser, sondern schlechter, weil es dir nicht mehr auffällt wie häufig du ein Objekt referenzierst.

Was du beschreibst hört sich sehr nach globaler Variable an, keine gute Sache in OOAD.

Wieso haben soviele Klassen refrenzen zu diesem einen Objekt?
 

richi_

Mitglied
Hallo.

Ich habe mich erst heute wieder eingeloggt. Sorry hab es diesen Post nicht mehr weiterverfolgt.

Es haben unterschiedliche Klassen eine Referenz auf das Objekt, weil es überall benötigt wird. Ich habe in einer Klasse eine Abfrage an eine Datenbank es kommen neue Informationen hinzu die in diesem Projekt eingetragen werden. Ich werte XML-Files aus und es kommen wieder neue Informationen durch.

Wahrscheinlich ist es ein Konzeptfehler von mir.

Entschuldigt nochmal die späte Antwort ich hab die letzten Tage/Wochen nicht mehr nachgeschaut.

Danke für eure Antwort

richi
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
B String - Wörter finden, welches Punkt und entsprechender Pre / Suffix hat? Java Basics - Anfänger-Themen 30
B Welches Lernmaterial? Java Basics - Anfänger-Themen 5
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
M Welches Framework für kleine WebApp nutzen? Java Basics - Anfänger-Themen 6
C LMC laufen kriegen, welches Java brauche ich ? Java Basics - Anfänger-Themen 5
T Welches Java? Java Basics - Anfänger-Themen 5
F HashMap oder welches Array? Java Basics - Anfänger-Themen 4
M Panel erstellen, welches ein Control erhält. Ausgabe soll über einen Stream erfolgen. Java Basics - Anfänger-Themen 0
T Methoden Welches Objekt ruft Methode auf? Java Basics - Anfänger-Themen 6
IngoF Welches Event kommt wann? Java Basics - Anfänger-Themen 8
I Programm, welches eine Textzeile einliest und alle darin enthaltenen Buchstaben umwandelt Java Basics - Anfänger-Themen 3
D Erste Schritte Welches Framework passt zu mir ? Java Basics - Anfänger-Themen 1
C Welches Format gibt Java aus? Java Basics - Anfänger-Themen 5
I Suche Component welches Map ähnelt Java Basics - Anfänger-Themen 11
J Welches Java-Videotutorial für Anfänger empfehlenswert? Java Basics - Anfänger-Themen 7
E Objekt bekommen, welches die Methode aufruft? Java Basics - Anfänger-Themen 15
J button.addActionListener(this); - Welches this ist gemeint? Java Basics - Anfänger-Themen 7
P Layout Manager - Welches Layout für Memory? Java Basics - Anfänger-Themen 7
F welches Layout für JButton-Liste verwenden Java Basics - Anfänger-Themen 6
S Vererbung/Herausfinden welches Objekt von welcher Klasse Java Basics - Anfänger-Themen 4
W welches Paket für welches Aufgabe nutzen Java Basics - Anfänger-Themen 3
M Rausfinden welches Objekt ein anderes Objekt erzeugt hat?! Java Basics - Anfänger-Themen 3
H Prüfen welches JTextfield ausgewählt/selektiert ist? Java Basics - Anfänger-Themen 7
L auslesen einer Variablen eines Objekt welches "Eigentum" eines Objektes der selben Klasse ist. Java Basics - Anfänger-Themen 12
N Welches Layout soll ich verwenden? Java Basics - Anfänger-Themen 3
C welches programm?? Java Basics - Anfänger-Themen 22
K Welches Spiel programmieren? Anfänger Java Basics - Anfänger-Themen 28
R Welches Tool soll ich benutzen? Java Basics - Anfänger-Themen 19
G gutes Reporting Tool welches mit Java zusammenarbeitet Java Basics - Anfänger-Themen 8
M Welches Betriebsystem ist für Java am geeignetesten Java Basics - Anfänger-Themen 135
-horn- Wie am Einfachsten mit Config-Datei umgehen. Welches Format? Java Basics - Anfänger-Themen 6
L welches tool NetBeans 6.0.1 oder Eclipse ? Java Basics - Anfänger-Themen 11
P Welches Buch ist für Einsteiger(fast) ohne Vorwissen passend Java Basics - Anfänger-Themen 7
N Welches Array bietet sich an? Java Basics - Anfänger-Themen 4
B Browsergame - welches Framework? Java Basics - Anfänger-Themen 2
A Welches GUI nutze ich am Besten? Java Basics - Anfänger-Themen 7
G Ein Java Programm welches ein lineares Gleichungssystem löst Java Basics - Anfänger-Themen 16
T Methode zum überprüfen welches JPanel offen ist Java Basics - Anfänger-Themen 3
B Applet, welches Maximum eines Array bestimmt Java Basics - Anfänger-Themen 2
U Welches Layout? Java Basics - Anfänger-Themen 6
N SAX, StAX, JDOM oder DOM , ab wann welches für XML Java Basics - Anfänger-Themen 14
L [Web/Servlets] welches Framework verwenden? Java Basics - Anfänger-Themen 10
G Welches Java Buch kaufen? Java Basics - Anfänger-Themen 7
R Welches inferface und somit welche IP benutzt meine JVM? Java Basics - Anfänger-Themen 2
E In welches Verzeichnis müssen selbsterstellte Klassen ? Java Basics - Anfänger-Themen 6
M Welches Java downloaden? Java Basics - Anfänger-Themen 2
L JFrame öffnet 2tes JFrame, welches Daten vom 1sten braucht. Java Basics - Anfänger-Themen 21
J Java Applets schreiben welches JDK wählen? Java Basics - Anfänger-Themen 5
megachucky Swing - suche fenster welches nicht schließbar ist Java Basics - Anfänger-Themen 3
B welches format hat java.sql.date? Java Basics - Anfänger-Themen 9
G PopupMenu; Welches Menü war's denn nun? Java Basics - Anfänger-Themen 6
Y Timeserver im Internet, welches Protokoll, wie zugreifen Java Basics - Anfänger-Themen 6
D was ist der vorteil vom Builder-design pattern? Java Basics - Anfänger-Themen 11
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
A Frage zum UML Design Java Basics - Anfänger-Themen 1
F Design pattern Java Basics - Anfänger-Themen 29
B Frage zu Datenbank Design - Rechnungen, Angebote... und deren Positionen Java Basics - Anfänger-Themen 4
N design time vs build time vs compile time Java Basics - Anfänger-Themen 2
H Eclipse , Design-Modus, unvollständige Darstellung Java Basics - Anfänger-Themen 0
M LookandFeel Design Java Basics - Anfänger-Themen 4
D Design Pattern Command Java Basics - Anfänger-Themen 3
M Erste Schritte Eclipse + design view Java Basics - Anfänger-Themen 3
J Design Patterns Java Basics - Anfänger-Themen 8
Tarrew Proxy Design-Pattern Java Basics - Anfänger-Themen 1
D Besseres Design Frage Java Basics - Anfänger-Themen 1
N Was bedeutet "Implementierung vor dem Client verbergen" bei Design Patterns? Java Basics - Anfänger-Themen 2
J MVC- Design Frage Java Basics - Anfänger-Themen 3
C Java Klassen Design? Java Basics - Anfänger-Themen 5
OnDemand Software-Design Java Basics - Anfänger-Themen 1
S Je nach erhaltene Daten unterschiedlich reagieren (Design Pattern?) Java Basics - Anfänger-Themen 3
B Warum haben Java Programme ein anderes Design? Java Basics - Anfänger-Themen 5
S Singleton (Design Patterns) Java Basics - Anfänger-Themen 16
A Design Pattern - Welche? Java Basics - Anfänger-Themen 33
Rudolf OOP Übungen zu Design Pattern in Java Java Basics - Anfänger-Themen 6
K Interface als Instanzvariable = gutes Design Java Basics - Anfänger-Themen 6
S Eclipse Design-Reiter fehlt Java Basics - Anfänger-Themen 6
D Design-Tipps für neues Programm (Excel-Charts-...) Java Basics - Anfänger-Themen 3
M Button mit eigenem Design Java Basics - Anfänger-Themen 6
S Gutes Design mit statischen oder Member-Methoden Java Basics - Anfänger-Themen 53
X Externer GUI Code verwenden / (Design Ansicht) Java Basics - Anfänger-Themen 3
B OOP Frage zu Klassen Design Java Basics - Anfänger-Themen 5
Hamstinator Design und Listener in verschiedenen Klassen Java Basics - Anfänger-Themen 6
J Methoden design Java Basics - Anfänger-Themen 3
hdi Design-Problem Java Basics - Anfänger-Themen 2
hdi Kleine Design/Convention Frage zu Konstruktoren Java Basics - Anfänger-Themen 4
Q Listen - DefaultListModel trotz Design ueber GUI? Java Basics - Anfänger-Themen 10
B Java-Anwendung im Windows Design Java Basics - Anfänger-Themen 8
hdi Design-Frage: bin unzufrieden Java Basics - Anfänger-Themen 11
M code design Java Basics - Anfänger-Themen 14
M log4j design Java Basics - Anfänger-Themen 11
D Design Fragen Java Basics - Anfänger-Themen 5
M Design: Abfrage auf korrekte Eingabe Java Basics - Anfänger-Themen 4
W Design Problem Java Basics - Anfänger-Themen 7
T Wie wichtig ist Design Patterns in einer Firma? Java Basics - Anfänger-Themen 8
M Java Design Frage Java Basics - Anfänger-Themen 2
S log4j "Richtiges" Design Java Basics - Anfänger-Themen 4
D JButton - Design ändern Java Basics - Anfänger-Themen 8
S Frage zum Design der Vererbung (Kartendeck und Dupletten) Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben