Progetto

Generale

Profilo

DesignPattern » Cronologia » Versione 1

Amministratore Truelite, 27-02-2007 11:54

1 1 Amministratore Truelite
== Flyweight Pattern ==
2
3
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.
4
5
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".
6
7
Ecco un esempio di codice:
8
{{{
9
class TipoOggetto(object):
10
        _listaOggetti = {}
11
        
12
        def __new__(cls, name):
13
                oggetto = TipoOggetto._listaOggetti.get(name,None)
14
                
15
                if not oggetto:
16
                        oggetto = object.__new__(cls)
17
                        TipoOggetto._listaOggetti[name] = oggetto
18
                return oggetto
19
20
21
        def __init__(self, name):
22
                self.name = name
23
                print id(self), name
24
        
25
a = TipoOggetto("obj1")
26
27
b = TipoOggetto("obj2")
28
a = TipoOggetto("obj1")
29
}}}
30
-1210981812 obj1
31
32
-1210981780 obj2
33
34
-1210981812 obj1
35
36
Come si può vedere dal risultato dell'esecuzione il primo ed il terzo oggetto sono "un solo oggetto".