1. Notion de modèle d'agence
Remarque : comme son nom l'indique, une classe est utilisée pour remplacer une autre classe pour exécuter des fonctions de méthode. Ce mode est quelque peu similaire au mode de décoration. La différence est que le mode proxy initialise la classe d'objet proxy au nom du client. , tandis que le mode décoration utilise une interface ou La référence initiale du paramètre décorateur est utilisée pour l'exécution.
Explication : Une agence immobilière peut aider le vendeur à vendre la maison à l'acheteur. Au milieu, le vendeur peut préciser le prix de vente. L'acheteur peut également proposer le type de maison qu'il souhaite acheter, et l'intermédiaire peut. aider à gérer les étapes intermédiaires. Finalement, un accord est conclu. Un intermédiaire peut agir en tant qu’agent pour plusieurs ventes et locations de maisons en même temps.
2. Le rôle et les précautions du mode proxy
Fonction Mode :
1. Proxy distant (un objet proxy localement des objets dans différents espaces)
2. Proxy virtuel (créez des objets coûteux selon vos besoins, par exemple en remplaçant temporairement des images réelles par des espaces réservés lors du rendu des pages Web)
3. Agent de sécurité (contrôle des droits d'accès aux objets confirmés)
4. Guidage intelligent (appel de l'agent objet pour gérer d'autres choses telles que le mécanisme de collecte des ordures)
Remarque :
1. N'abusez pas du proxy, parfois cela ne fait qu'ajouter de la complexité au code
3. Code du mode Agent et résumé pratique
<!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>