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!