Beschreibung des Agentenmodus
Hinweis: Wie der Name schon sagt, soll eine Klasse eine andere Klasse ersetzen, um Methodenfunktionen auszuführen. Dieses Muster ist dem dekorativen Modus etwas ähnlich. Der Unterschied besteht darin, dass der Proxy -Modus den Client ersetzt, um die Proxy -Objektklasse zu initialisieren, während der dekorative Modus durch Schnittstelle oder Verweise auf den Parameter des anfänglichen Dekorators ausgeführt wird.
In der dynamischen objektorientierten Sprache spielt der Proxy-Modus die Rolle bei der Kontrolle und Änderung der Proxy-Klasse und spielt auch eine vollständige versteckte und geschützte Rolle für die Proxy-Klasse. Die Proxy -Klasse wird indirekt initialisiert und nur aufgerufen, wenn wir sie brauchen.
Szenenbeschreibung:
Ein sehr häufiges Beispiel für die Vermietung eines Hauses. Die Mieter möchten ein Haus mieten und der Vermieter möchte das Haus vermieten, aber weder der Mieter noch der Vermieter haben viel Zeit, um ein Haus zu finden oder darauf zu warten, dass jemand das Haus zu Hause sieht, also gehen sie zusammen, um einen Immobilienmakler zusammen zu finden. Der Vermieter verpflichtet das Zimmer der Agentur für die Vermietung und Verkauf. Wenn es eine geeignete Person gibt, nimmt der Agent den Raum, um es zu sehen und das Geld zu bezahlen, um es zu mieten, damit der Vermieter das Zimmer ausmietet. Der Mieter vertraut das Haus der Agentur an, um den von der Agentur geforderten Raum für den Raum zu unterstützen. Nachdem der Agent den Mieter gefunden hat, werden die beiden das Geld für die Miete bezahlen, damit der Mieter es an den Ort mieten kann, an dem er lebt.
Instanzquellcode
Folgen Sie dem obigen Beispiel, um zu erreichen.
1. Vermietervermietungskategorie;
Die Codekopie lautet wie folgt:
Funktion fangdong () {
this.room = 'Raumname';
}
Fangdong.prototype.chuzu = function () {
console.log ('Landhalter mietet Raum:' + this.room);
}
2. Vermittlerklasse:
Die Codekopie lautet wie folgt:
Funktion proxy () {
this.Fangdong = new fangdong ();
}
Proxy.prototype.chuzu = function () {
this.Fangdong.chuzu ();
console.log ('Carry Agency -Gebühren nach dem Mieten');
}
3.. Wie man verwendet:
Die Codekopie lautet wie folgt:
// Der Mieter bittet einen Agenten, ein Haus zu finden;
var proxy = new Proxy ();
Proxy.Chuzu ();
Schauen Sie sich die obige Verwendung an. Die Proxy -Klasse ist auf der Clientseite überhaupt nicht verfügbar. Verwenden Sie einfach die Proxy -Klasse, die in einem Szenario gut verwendet werden kann, in dem bestimmte Geschäftslogikprozesse geschützt werden müssen. Die Verwendung des Proxy -Modus kann in einer Proxy -Klasse gut verwendet werden, die geschützt werden muss.
Andere Anweisungen
Wie im Dekorateurmodus spiegelt auch der Proxy-Modus gut das Prinzip des objektorientierten Denkens der Offenheit für Erweiterung und Schließungsänderung wider.
Der Proxy -Modus können Schnittstellen oder abstrakte Klassen verwenden, um allgemeine Schnittstellen zu regulieren: (Das Folgende enthält den Java -Proxy -Modus)
1.. Abstrakte Klassen -Abstract -Methode;
Die Codekopie lautet wie folgt:
öffentliches abstraktes Klassenhaus {
public void abstract chuzu ();
}
öffentliche Klasse Fangdong erweitert das Haus {
private String Room = "Raumname";
@Override
public void chuzu () {
System.out.println (Raum);
}
}
Der Proxy der öffentlichen Klasse erweitert das Haus {
Privat Fangdong Fangdong;
public proxy () {
this.Fangdong = new Hangdong ();
}
@Override
public void chuzu () {
this.fandong.chuzu ();
System.out.println ("Pay Agency -Gebühr nach dem Mieten");
}
}
//verwenden
House House = New Proxy ();
House.Chuzu ();
2. Schnittstellenmethode:
Die Codekopie lautet wie folgt:
Schnittstellenhaus {
public void chuzu ();
}
öffentliche Klasse Fangdong implementiert House {
private String Room = "Raumname";
@Override
public void chuzu () {
System.out.println (Raum);
}
}
öffentliche Klasse Proxy implementiert House {
Privat Fangdong Fangdong;
public proxy () {
this.Fangdong = new Hangdong ();
}
@Override
public void chuzu () {
this.fandong.chuzu ();
System.out.println ("Pay Agency -Gebühr nach dem Mieten");
}
}
//verwenden
House House = New Proxy ();
House.Chuzu ();