Heim  >  Artikel  >  Web-Frontend  >  JavaScript-Designmuster, klassische Proxy-Muster_Javascript-Kenntnisse

JavaScript-Designmuster, klassische Proxy-Muster_Javascript-Kenntnisse

WBOY
WBOYOriginal
2016-05-16 15:13:531716Durchsuche

1. Konzept des Agenturmodells

Hinweis: Wie der Name schon sagt, wird eine Klasse verwendet, um eine andere Klasse zum Ausführen von Methodenfunktionen zu ersetzen. Der Unterschied besteht darin, dass der Proxy-Modus die Proxy-Objektklasse im Namen des Clients initialisiert , während der Dekorationsmodus eine Schnittstelle verwendet oder Die anfängliche Dekoratorparameterreferenz wird zur Ausführung verwendet.

Erläuterung: Eine Immobilienagentur kann dem Verkäufer beim Verkauf des Hauses helfen. In der Mitte kann der Verkäufer den Verkaufspreis angeben, und der Käufer kann auch den Typ des Hauses vorschlagen, den er kaufen möchte helfen bei der Bewältigung der Zwischenschritte. Endlich kommt ein Deal zustande. Ein Vermittler kann bei vielen Hausverkaufs- und Mietangelegenheiten gleichzeitig als Vermittler fungieren.

2. Die Rolle und Vorsichtsmaßnahmen des Proxy-Modus

Modusfunktion:

1. Remote-Proxy (ein Objekt lokal Proxy-Objekte in verschiedenen Räumen)

2. Virtueller Proxy (erstellen Sie nach Bedarf teure Objekte, z. B. das vorübergehende Ersetzen realer Bilder durch Platzhalter beim Rendern von Webseiten)

3. Sicherheitsagent (Kontrolle der Zugriffsrechte auf bestätigte Objekte)

4. Intelligente Führung (Aufruf des Objektagenten, um andere Dinge wie den Garbage-Collection-Mechanismus zu erledigen)

Hinweis:

1. Missbrauchen Sie den Proxy nicht, manchmal erhöht er nur die Komplexität des Codes

3. Agent-Modus-Code und praktische Zusammenfassung

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
//代理模式需要三方
//1.买家
function maijia(){
this.name = "小明";
this.money = "30万";
}
//2.中介
function zhongjie(){
}
zhongjie.prototype.maifang = function(){
//new fongdong(new maijia()).maifang("20万");
new fongdong(new maijia()).maifang("20万");
}
//3.卖家
function fongdong(maijia){
this.maijia_name = maijia.name;
this.maijia_money = maijia.money;
this.maifang = function(money){
// alert("收到了来自【"+this.maijia_name+"】"+money+"人民币");
alert("收到了来自【"+this.maijia_name+"】"+this.maijia_money+"人民币");
}
}
(new zhongjie()).maifang();
</script>
<script>
// A2B
function A(){
this.money = "20RMB";
}
function to(){
if(!(this instanceof to)){
return new to;
}
}
to.prototype.maifang = function(){
var a = new A();
new B().maifang(a.money);
}
function B(){
this.maifang = function(money){
alert("收到了钱"+money);
}
}
(new to()).maifang();
to().maifang();
</script>
</body>
</html>

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