Warum ist java.lang.Integer.valueOb ein Fliegengewichtsmuster?

7

Warum ist java.lang.Integer.valueOb ein flyweight Muster? Ich habe versucht den Grund zu finden, konnte es aber nicht.

    
BOSS 29.06.2011, 13:03
quelle

2 Antworten

13

Wenn wir uns die Quelle für valueOf ansehen, können wir einen Hinweis bekommen: Quelle von java.lang.Integer Zeilen 638-643:

%Vor%

Es sieht so aus, als ob die Integer-Klasse einen Cache von Integer-Objekten für allgemeine Werte verwaltet. Anstatt jedes Mal, wenn jemand nach valueOf fragt, ein neues zu erstellen, gibt es nur einen Verweis auf einen bereits vorhandenen zurück. Wenn Sie also Integer.valueOf(1) mehrmals aufrufen, erhalten Sie jedes Mal das gleiche Objekt zurück (nicht nur äquivalente Objekte).

    
sshannin 29.06.2011, 13:11
quelle
6

Das hört sich so an, als ob Sie gebeten wurden, eine Übung zu lösen.

Wenn Sie die Methode zweimal mit demselben Argument aufrufen, kann dasselbe Objekt zurückgeben, wodurch die Speicherbelegung begrenzt wird. Dies entspricht der Definition des Fliegengewichtsmusters.

    
Mathias Schwarz 29.06.2011 13:07
quelle

Tags und Links