Progetto

Generale

Profilo

Actions

DesignPattern » Cronologia » Versione 1

Versione 1/9 | Successivo »
Amministratore Truelite, 27-02-2007 11:54


Flyweight Pattern

Il pattern flyweight viene utilizzato quando si ha a che fare con un gran numero di oggetti con alcune caratteristiche comuni (che variano raramente) ed altre non comuni di cui ogni oggetto si fa carico per se.

Questo pattern può essere molto utile quando si vuole alleggerire il carico in ram di un grande numero di oggetti, facendo in modo di riutilizzare oggetti con "lo stesso stato".

Ecco un esempio di codice: {{{
class TipoOggetto(object):
_listaOggetti = {}

def new(cls, name):
oggetto = TipoOggetto._listaOggetti.get(name,None)
if not oggetto:
oggetto = object.__new__(cls)
TipoOggetto._listaOggetti[name] = oggetto
return oggetto
def init(self, name):
self.name = name
print id(self), name

a = TipoOggetto("obj1")

b = TipoOggetto("obj2")
a = TipoOggetto("obj1")
}}}
-1210981812 obj1

-1210981780 obj2

-1210981812 obj1

Come si può vedere dal risultato dell'esecuzione il primo ed il terzo oggetto sono "un solo oggetto".

Aggiornato da Amministratore Truelite quasi 18 anni fa · 1 revisions