Proxy pattern: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Botcrux (discussione | contributi)
m Bot: fix citazione web (v. discussione)
Riga 5:
Un esempio ben conosciuto di proxy pattern è la tecnica [[reference counting]] dei [[Puntatore (programmazione)|puntatori]].
 
Nelle situazioni in cui molte copie di un oggetto complesso devono esistere, il proxy pattern può essere adottato per incorporare il [[Flyweight pattern]] per ridurre l'occupazione di memoria dell'oggetto. Tipicamente viene creata un'istanza di oggetto complesso, e molteplici oggetti proxy, ognuno dei quali contiene un riferimento al singolo oggetto complesso. Ogni operazione svolta sui proxy viene trasmessa all'oggetto originale. Una volta che tutte le istanze del proxy sono distrutte, l'oggetto in memoria può essere deallocato.
 
==Diagramma==
Riga 23:
Displaying HiRes_10MB_Photo3
 
La [[Classe_Classe (informatica)|classe]] <code>ProxyImage</code> è utilizzata per ritardare l'operazione (onerosa) di caricamento di un [[file]] dal disco finché il risultato di questa operazione non è effettivamente necessario. Se il file non è mai necessario, il caricamento risulta essere completamente eliminato.
 
<source lang="java">
Riga 71:
Image image1 = new ProxyImage("HiRes_10MB_Photo1");
Image image2 = new ProxyImage("HiRes_10MB_Photo2");
Image image3 = new ProxyImage("HiRes_10MB_Photo3");
 
image1.displayImage(); // loading necessary
Riga 85:
===Protection proxy (in C#)===
 
In questo esempio scritto in [[Linguaggio_C_SharpLinguaggio C Sharp|C#]], nella classe <code>RealClient</code> è memorizzato un numero di conto. Soltanto gli utenti che conoscono una [[password]] valida possono accedere a questo conto. Il <code>RealClient</code> è protetto dal <code>ProtectionProxy</code> che conosce la password. Prima di far leggere il numero di conto all'utente, il proxy richiede che questi si autentichi; Solo se la password introdotta è corretta il proxy invoca il <code>RealClient</code> per restituire il numero di conto all'utente.
 
In questo esempio '''thePassword''' è la password corretta
Riga 156:
 
==Collegamenti esterni==
*{{en}}cita [web|http://wiki.java.net/bin/view/Javapedia/ProxyPattern |Proxy pattern in Java]|lingua=en}}
*{{en}}cita [web|http://www.lepus.org.uk/ref/companion/Proxy.xml |Proxy pattern in UML e in LePUS3 (un linguaggio di modellazione formale)]|lingua=en}}
 
{{Design Patterns Patterns}}