Fliegengewicht

Javt

Aktives Mitglied
Hi,

Ein Fliegengewicht-Objekt sollte doch eigentlich von einer "Singleton-Klasse" erzeugt und zurückgegeben werden und nicht von einer "Factory-Klasse". Ein Fliegengewicht-Objekt wird ja nur einmal erzeugt und dann nie wieder. Danach wird darauf zentral zugegriffen. Da macht doch eine "Factory-Klasse" keinen Sinn, da eine "Factory Klasse" auch mehrere Instanzen eines Fliegengewichts zurückgeben kann, was ja nicht Sinn der Sache ist. Eine Factory-Klasse würde jedes Mal bei jedem Aufruf ein neues Objekt instanziieren, wodurch der Speicher explodieren würde. Kann mir da mal jemand weiterhelfen?

lg
 

Landei

Top Contributor
Wer hat dir denn eingeflüstert, dass eine Factory jedesmal ein anderes Objekt zurückgeben muss? Es liegt völlig in ihrem Ermessen, ob sie ein Objekt zurückliefert, eine bestimmte Anzahl (Pool) oder immer ein neues:

Java:
public class ElvisFactory {
   private static final Elvis ELVIS = new Elvis();

   public static Elvis getElvis() {
       return ELVIS; 
   }
}

Jetzt kommt sicher die nächste Frage, nämlich wieso man dann nicht gleich ein Singleton nimmt. Ganz einfach: Damit man es sich später immer noch aussuchen kann, ohne den aufrufenden Code ändern zu müssen. Z.B. ist sich der echte Elvis zum Testen vielleicht zu schade, und man braucht einen "Imitator" (Mock-Object).
 
Zuletzt bearbeitet:
G

gst

Gast
Wenn ich mir deine Fragen so anschaue, mal eine kurze Frage: Du bist nicht zufällig die neueste Reinkarnation von Kossy aka DennisXX aka Felix2000?
 
S

Spacerat

Gast
@Landei: Hab' ich was verpasst? Was "produziert" denn deine Elvis-Fabrik? Nur einen Elvis? Noch ist Elvis bei dir ein Singleton. Der Methodenname erinnert auch eher daran, als an eine Factory. Eine Factory produziert nun mal und ein korrekte Methode wäre in etwa:
[JVAVA]public static Elvis newElvis() {
return new Elvis();
[/code]
 
M

Marcinek

Gast
Er wollte zeigen, dass auch eine Factoryklasse Singletons produzieren kann, weil der TO das gefragt hat.

[OT]
Wenn ich mir deine Fragen so anschaue, mal eine kurze Frage: Du bist nicht zufällig die neueste Reinkarnation von Kossy aka DennisXX aka Felix2000?

joooooooo....[/OT]
 

Oben