OO: Wo persistente Instanz löschen?

Jakob

Aktives Mitglied
Thread Starter
Registriert
05.01.2004
Beiträge
1.070
Hallo,

in einer OO-Sprache erstelle ich eine Klasse und instanziiere diese. Dabei wird diese persistent, also bspw. in einer DB, gesichert.

Wo lege ich jetzt die Methode „Lösche Instanz Nr. …“ bzw. „Lösche diese Instanz“ ab?
Ich sehe drei Möglichkeiten:
- in der Klasse selbst, public static void int:void
- in der Klasse selbst, public void void:void
- in der Superklasse, public void int:void

Welche Variante würdet ihr wählen?
 

Ischi

Aktives Mitglied
Registriert
01.05.2005
Beiträge
1.106
Um welche OO-Sprache handelt es sich den überhaupt? Java,C++,Obj.C,OCaml,etc. etc., generell würde ich aber sagen in der Klasse selbst, denn wenn sich das Object erzeugen kann (Konstruktor) muss es sich auch wieder zerstören können (Destruktor).
MFG

EDIT: Sry hab nicht richtig geschaut, sollte PHP sein gell?
 

jpv

Mitglied
Registriert
09.06.2006
Beiträge
159
Das hängt sicherlich wie so oft vom Anwendungsfall ab ...
In der Klasse selbst - also public void void:void finde ich immer am praktischsten. Ich habe ein Objekt ... lösche es.
Wenn ich nur die ID (int) habe, dann ist public static void int:void offensichtlich die eleganteste Methode.
Die IDs könnten z.B. aus einer anderen Quelle stammen - einem Index, durch den ich mit einem Iterator durchlaufe und nach bestimmten Metadatenkriterien die zu löschenden wähle.

Wenn das Löschen aus der DB Nachbereitung erfordert - z.B. Löschen des Objektes - dann ist die statische Variante das Mittel der Wahl.

Vielleicht nützts ;)
Winterlicher Gruß aus HH,
jpv
 

Jakob

Aktives Mitglied
Thread Starter
Registriert
05.01.2004
Beiträge
1.070
Ist in diesem Fall PHP, meinte die Frage generell, aber vielleicht ist's einfacher das erstmal auf PHP zu beschränken:

Eine Klasse kann ja schon längst wieder zerstört sein, obwohl sie noch in der DB liegt.
In PHP wird sie ja nach jedem fertigen Skriptdurchlauf zerstört. Da soll er natürlich nicht die Klasse aus der DB löschen.

Ich tendiere zu meiner zweiten Möglichkeit. Der Nachteil der ersten ist, dass man erst die Klasse instanziieren muss, um sie zu löschen. Der Nachteil der dritten, dass die Superklasse unnötig aufgebläht wird.

Edit: Danke jpv, sehe ich mittlerweile auch so. Übrigens hier unten scheint die Sonne bei sommerlichen 7°C :)
 
Oben Unten