Description du mode agent
Remarque: Comme son nom l'indique, il s'agit d'utiliser une classe pour remplacer une autre classe pour effectuer des fonctions de méthode. Ce modèle est un peu similaire au mode décoratif. La différence est que le mode proxy remplace le client pour initialiser la classe d'objets proxy, tandis que le mode décoratif est exécuté par interface ou référence au paramètre du décorateur initial.
Dans le langage dynamique orienté objet, le mode proxy joue le rôle de contrôler et de modifier la classe proxy et joue également un rôle caché et protégé complet pour la classe de procuration; La classe proxy est indirectement initialisée et appelée uniquement lorsque nous en avons besoin;
Description de la scène:
Un exemple très courant de louer une maison. Les locataires veulent louer une maison et le propriétaire ne veut pas louer la maison, mais ni le locataire ni le propriétaire n'ont beaucoup de temps pour trouver une maison ou attendre que quelqu'un voie la maison à la maison, alors ils vont trouver un agent immobilier ensemble. Le propriétaire confie la salle à l'agence pour la location et la vente. Lorsqu'il y a une personne appropriée, l'agent prendra la pièce pour le voir et payer l'argent pour le louer, afin que le propriétaire loue la chambre; Le locataire confie la maison à l'agence pour aider l'emplacement de la chambre requis par l'agence. Une fois que l'agent a trouvé le locataire, les deux paieront l'argent pour le louer, afin que le locataire puisse le louer à l'endroit où il vit;
Code source d'instance
Suivez l'exemple ci-dessus à réaliser;
1. Catégorie de location du propriétaire;
La copie de code est la suivante:
fonction fangdong () {
this.room = 'Nom de la salle';
}
Fangdong.prototype.chuzu = fonction () {
Console.log ('Room de loyers de propriétaires fonciers:' + this.room);
}
2. Classe d'agent intermédiaire:
La copie de code est la suivante:
fonction proxy () {
this.fangdong = new fangdong ();
}
Proxy.prototype.chuzu = fonction () {
this.fangdong.chuzu ();
Console.log («transporte des frais d'agence après la location»);
}
3. Comment utiliser:
La copie de code est la suivante:
// Le locataire demande à un agent d'aider à trouver une maison;
var proxy = new proxy ();
proxy.chuzu ();
Regardez l'utilisation ci-dessus. La classe proxy n'est pas du tout disponible du côté client. Utilisez simplement la classe proxy, qui peut être bien utilisée dans un scénario où certains processus de logique métier doivent être protégés; L'utilisation du mode proxy peut être bien utilisée dans une classe de proxy qui doit être protégée;
Autres instructions
Comme le mode décorateur, le mode proxy reflète également bien le principe de la réflexion orientée objet à l'ouverture à l'extension et à la modification de la clôture;
Mode proxy, vous pouvez utiliser des interfaces ou des classes abstraites pour réguler les interfaces communes: (ce qui suit fournit le mode proxy Java)
1. Méthode abstraite de classe abstraite;
La copie de code est la suivante:
Maison de classe abstraite publique {
VOID PUBLIQUE Résumé Chuzu ();
}
classe publique Fangdong étend la maison {
Salle de chaîne privée = "Nom de la salle";
@Outrepasser
public void chuzu () {
System.out.println (salle);
}
}
La classe publique Proxy étend la maison {
Fangdong privé Fangdong;
Proxy public () {
this.fangdong = new Hangdong ();
}
@Outrepasser
public void chuzu () {
this.fandong.chuzu ();
System.out.println ("Frais d'agence de rémunération après la location");
}
}
//utiliser
Maison house = nouveau proxy ();
house.chuzu ();
2. Méthode d'interface:
La copie de code est la suivante:
maison d'interface {
public void chuzu ();
}
classe publique Fangdong implémente la maison {
Salle de chaîne privée = "Nom de la salle";
@Outrepasser
public void chuzu () {
System.out.println (salle);
}
}
classe publique Proxy implémente la maison {
Fangdong privé Fangdong;
Proxy public () {
this.fangdong = new Hangdong ();
}
@Outrepasser
public void chuzu () {
this.fandong.chuzu ();
System.out.println ("Frais d'agence de rémunération après la location");
}
}
//utiliser
Maison house = nouveau proxy ();
house.chuzu ();