Différences entre les versions de « Patrons de conception/Proxy »

→‎Exemples : + copié de en:
(+)
(→‎Exemples : + copié de en:)
 
== Exemples ==
 
L'exemple [[Programmation Java|Java]] suivant implémente un Proxy virtuel.
La classe <code>ProxyImage</code> est utilisée pour retarder le long chargement d'un fichier jusqu'à ce que le chargement soit réellement nécessaire.
Si le fichier n'est pas nécessaire, le chargement coûteux en temps n'a pas du tout lieu.
 
<source lang="java">
import java.util.*;
 
interface Image
{
public void displayImage();
}
 
class RealImage implements Image
{
private String filename;
public RealImage(String filename)
{
this.filename = filename;
loadImageFromDisk();
}
 
private void loadImageFromDisk()
{
System.out.println("Chargement de "+filename);
// Opération potentiellement coûteuse en temps
}
 
public void displayImage()
{
System.out.println("Affichage de "+filename);
}
}
 
class ProxyImage implements Image
{
private String filename;
private Image image;
 
public ProxyImage(String filename)
{
this.filename = filename;
}
 
public void displayImage()
{
if (image == null)
{
image = new RealImage(filename); // Chargement sur demande seulement
}
image.displayImage();
}
}
 
class ProxyExample
{
public static void main(String[] args)
{
Image image1 = new ProxyImage("HiRes_10MB_Photo1");
Image image2 = new ProxyImage("HiRes_10MB_Photo2");
Image image3 = new ProxyImage("HiRes_10MB_Photo3");
 
image1.displayImage(); // chargement nécessaire
image2.displayImage(); // chargement nécessaire
image1.displayImage(); // pas de chargement nécessaire, déjà fait
// la troisième image ne sera jamais chargée : pas de temps gaspillé
}
}
</source>
 
Le programme affiche :
Chargement de HiRes_10MB_Photo1
Affichage de HiRes_10MB_Photo1
Chargement de HiRes_10MB_Photo2
Affichage de HiRes_10MB_Photo2
Affichage de HiRes_10MB_Photo1
 
[[Catégorie:Patrons de conception (livre)]]