Heim  >  Artikel  >  Java  >  Stellvertreter

Stellvertreter

Susan Sarandon
Susan SarandonOriginal
2024-09-22 22:15:41378Durchsuche

Stellvertreter

Stellvertreter ist eines der strukturellen Entwurfsmuster. Es wird verwendet, um ein Ersatz- oder Platzhalterobjekt zu erstellen, das zur Steuerung des Zugriffs auf das Originalobjekt verwendet wird.
Es fungiert als Vermittler, der ein zusätzliches Maß an Kontrolle bietet, und kann vor und nach der Delegierung der Anfrage an ein reales Objekt zusätzliche Aktionen ausführen.

Schlüsselkonzepte:
Stellvertreter-Objekt: Stellt das reale Objekt dar und steuert den Zugriff darauf.
Real Object (Subjekt): Das tatsächliche Objekt, das die Arbeit erledigt.
Client: Die Entität, die mit dem Stellvertreter und nicht direkt mit dem realen Objekt interagiert.

Lassen Sie uns dies am Beispiel eines Bildes verstehen.

//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");
    }
}

//Stellvertreter class
public class StellvertreterImage implements Image {
    private Image image;
    private String file;

    public StellvertreterImage(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 StellvertreterImage("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();
    }
}

Ausgabe:

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

Anwendungsfälle:
Verzögerte Initialisierung: Objekterstellung wird verzögert, bis sie unbedingt erforderlich ist.
Zugriffskontrolle: Beschränken des Zugriffs auf bestimmte Methoden basierend auf Benutzerrollen oder Berechtigungen.
Protokollierung: Hinzufügen von Protokollierungs- oder Überwachungsfunktionen.

Das obige ist der detaillierte Inhalt vonStellvertreter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:ZustandNächster Artikel:Zustand