Alle drei Varianten sidn ok und von Fall zu Fall auch sinnig.
Meistens benutze ich Fall 3, manchmal Fall 2 und eher selten Fall 1.
Zu Fall 1 noch eine Anmerkung.
Ich finde, wenn man diese Variante benutzt sollte die Klasse, die das Objekt in
seiner Methode zurückgibt auch eine Methode besitzen, um diese Objekt frezugeben.
Delphi-Quellcode:
function TEineKlasse.ErzeugeEinObject(): TEineAndereKlasse;
begin
...
end
procedure TEineKlasse.GibObjectWiederFrei();
begin
...
end;
Wenn man ein Objekt erhält, daß nur einmal existieren darf, sorgt die Methode
"GibObjectWiederFrei" dafür, daß genau dieses Objekt freigegeben wird.
Hat man den Fall, daß diese Klasse immer wieder neue Objekte erzeugen kann,
dann sollte die Klasse selbst eine Referenz zu jedem erzeugten Object in einer Liste halten und
beim Aufruf von "GibObjectWiederFrei" könnte man dann entweder den Index des
Objektes übergeben oder das Objekt selbst...
Ich finde alle Varianten sind Geschmackssache und jedes hat seine Lebensberechtigung.
Im normalen Programmieralltag wird man aber bevorzugt Variante 3, seltener Variante 2 und ganz selten Variante 1 benutzen. Ich und meine Kollegen machen das zumindest so.