Klasseninstanz mehrfach nutzen

BLOEBAUM

Erfahrenes Mitglied
Hallo,

ich möchte eine Ausgabenverwaltung programmieren. Dabei arbeite ich mit der Datenbank MySQL.
In dem Java File DatenbankAufrufe.java habe ich alle Zuriffe auf die Datenbanktabellen.
Ich möchte nur eine Instanz zu dieser Klasse anlegen und damit Zugriffe aus allen Klassen auf die Datenbank durchführen (d. h. auch nur einmal an die Datenbank anmelden)
(Klasse Warengruppen_anzeigen, Ausgaben_erfassen, warengruppen_anlegen, usw.)
Beispiel: Auszug aus menu.java

{ DatenbankAufrufe DBAUS = new DatenbankAufrufe();
try {
if (DBAUS.Anmeldung() == true)
{ ....

Kann ich die Instanz DBAUS durch eine Objektvariable an andere Klassen übergeben ?
Ich könnte natürlich in jeder neuen Klasse eine neue Instanz zu der Klasse DatenbankAufrufe anlegen, aber dann müsste ich die Anmeldung an die Datenbank ja auch mehrfach durchführen. Das möchte ich jedoch vermeiden.

Wer kann mir helfen?
 
Snape hat gesagt.:
Probier's doch mal mit Singleton. Das sollte genau das richtige sein für Dich.
Danke Snape,

werde ich gleich ausprobieren.

Schöne Weihnachten und guten Rutsch.

Zur Info für Anfänger wie auch ich einer bin:
Ein Singleton wird in einer Klasse eingebaut, für die man nur eine Instanz eröffnen will:
Ich wollte in einer Klasse alle Datenbankzugriffe abbilden. Im Einstiegsmenü sollte eine Instanz dieser Klasse
erstellt werden. Danach sollte in allen folgenden Aktionen immer auf diese Instanz zugegriffen werden:

Mein Klassenname lautet: DatenbankAufrufe

public class DatenbankAufrufe {

// 1. Definition einbauen
private static DatenbankAufrufe _instance;

/**
* Konstruktor
* @param pcon
*/
public DatenbankAufrufe() {
super();
}

// 2. Methoder einbauen
public synchronized static DatenbankAufrufe getInstance() {
if (_instance == null)
{ _instance = new DatenbankAufrufe(); }

return _instance;
}


weitere Methoden

Der Zugriff in allen folgenden Programmen wird dann um "getInstance()" erweitert. Dadurch wird beim ersten Zugriff (bei mir im Menü bei der Anmeldung) eine Instanz der Klasse gebildet und bei allen weiteren Zugriffen auf diese Instanz genutzt.

Beispiel: Insert in die Datenbanktabelle ausgaben

if (DatenbankAufrufe.getInstance().InsertAusgaben(0, sDatum,
wgrnr, Double.parseDouble(jTWert.getText()),
jTText.getText(), ausdatum, ausdatum) == true)
 
Zuletzt bearbeitet:
Zurück