Maison  >  Article  >  Java  >  Procuration

Procuration

Susan Sarandon
Susan Sarandonoriginal
2024-09-22 22:15:41391parcourir

Procuration

Le proxy est l'un des modèles de conception structurelle. Il est utilisé pour créer un objet de substitution ou d'espace réservé, qui est utilisé pour contrôler l'accès à l'objet d'origine.
Il agit comme un intermédiaire ajoutant un niveau de contrôle supplémentaire et peut effectuer des actions supplémentaires avant et après la délégation de la demande à un objet réel.

Concepts clés :
Objet proxy : représente l'objet réel et contrôle l'accès à celui-ci.
Objet réel (Sujet) : L'objet réel qui fait le travail.
Client : L'entité qui interagit directement avec le proxy au lieu de l'objet réel.

Comprenons cela en prenant un exemple d'image.

//Object interface
public interface Image{
    public void display();
}


//Real object
public class RealImage implements Image {
    private String file;

    public RealImage(String fileName){
        this.file = fileName;
        loadImageFromDisk();
    }
    @Override
    public void display(){
        System.out.println("Rendering image : "+ file);
    }
    private void loadImageFromDisk(){
        System.out.println("Loading image "+file+" from disk");
    }
}

//Procuration class
public class ProcurationImage implements Image {
    private Image image;
    private String file;

    public ProcurationImage(String fileName){
        this.file =fileName;
    }
    @Override
    public void display(){
        if(image ==null){// create object of RealImage only if the image reference is null, thus resulting in LazyIntialization 
            //( i.e. Initializing the object only when it is needed not beforehand)
            image = new RealImage(file);
        }
        image.display();
    }

}

// client
public class Main {
    public static void main(String args[]){
        Image image = new ProcurationImage("wallpaper.png");
        //image is loaded and displayed for the first time
        image.display();
        //image will not be loaded again, only display will be called 
        image.display();
    }
}

Sortie :

Loading image wallpaper.png from disk
Rendering image : wallpaper.png

Cas d'utilisation :
Initialisation paresseuse : retarder la création d'un objet jusqu'à ce qu'elle soit absolument nécessaire.
Contrôle d'accès : restreindre l'accès à des méthodes spécifiques en fonction des rôles ou des autorisations des utilisateurs.
Logging : Ajout de fonctionnalités de journalisation ou de surveillance.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:ÉtatArticle suivant:État