Latest web development tutorials

Mode proxy

En mode proxy (Pattern Proxy), une classe de fonctions au nom d'une autre classe. Ce type de modèles de conception appartiennent à modèle structurel.

En mode proxy, nous créons un objet avec un objet existant afin de fournir une interface fonctionnelle au monde extérieur.

introduction

Intention: fournir un agent pour contrôler l' accès à cet objet à d' autres objets.

Principale résolution: accès direct à l'objet a causé des problèmes, tels que: l'objet que vous souhaitez accéder sur la machine distante.Dans les systèmes orientés objet, certains objets pour une raison quelconque (comme la création d'un objet est cher, ou certaines actions nécessitent des contrôles de sécurité, ou d'accès en dehors du processus), il donnera aux utilisateurs un accès direct à la configuration du système ou beaucoup de mal, nous pouvons ajouter une couche pour accéder à cet objet au moment de l'accès à cet objet.

Quand l'utiliser: lorsque vous voulez faire quelque chose pour contrôler l' accès à une classe.

Comment fixer: ajouter la couche intermédiaire.

Le code clé: lien avec les combinaisons de classe proxy.

Exemples d'application: 1, Windows raccourcis à l' intérieur.2, le cochon est allé à haute Cuilan changement résultat Monkey, peut être compris: l'apparence Cuilan haute résumé, haute Turquoise Blue I and Monkey implémente cette interface, Pig accès haute Cuilan quand voit pas le Roi des Singes, de sorte que le Roi Singe est un haut Cuilan classe proxy. 3, pas nécessairement pour acheter des billets de train à la gare pour acheter, vous pouvez aussi aller dans les points de vente. 4, un chèque ou un certificat de dépôt bancaire est un compte proxy fonds. Vérifiez les transactions sur le marché est utilisé au lieu d'argent, et fournit le contrôle du compte de capital de l'émetteur. 5, le printemps aop.

Avantages: 1, des responsabilités claires.2, une grande évolutivité. 3, intelligent.

Inconvénients: 1, comme entre le client et le thème réel que l'objet proxy, donc un certain type de mode proxy peuvent entraîner plus lente demande de la vitesse de traitement.2, pour atteindre le mode proxy nécessite un travail supplémentaire pour atteindre un certain mode proxy est très complexe.

Scénarios d' utilisation:en fonction de répartir les responsabilités, ont généralement les scénarios d'utilisation suivants: 1, Remote Agent. 2. Alertes. 3, Copy-on-Write agents. 4, la protection (protéger ou Access) l'agent. 5, Agent Cache. 6, pare-feu (Firewall) Agent. 7, synchronisation (synchronisation) Agent. 8, les références intelligentes (Smart Reference) Agent.

Note: La différence entre 1 et adaptateur modes: motif Adapter principaux changements envisagés à l'interface de l' objet, et le mode proxy ne peuvent être modifiés par des agents de l'interface de classe.La différence entre 2 et décorateur modèles: Décorateur pour améliorer la fonctionnalité et le mode proxy doit être contrôlé.

réalisation

Nous allons créer une interfaced'imageet la mise en œuvre de l'interfacedel'imagedes classes d'entités.ProxyImageest une classe proxy, ce qui réduit l' empreinte mémoireRealImageobjets chargés.

ProxyPatternDemo,nous démontrons l'utilisation de la classeProxyImagepour obtenirunobjetdel'imagepour être chargé et affiché sur la demande.

motif Proxy diagramme UML

Etape 1

Créer une interface.

Image.java

public interface image {
   affichage void ();
}

Etape 2

Créer classe d'entité qui implémente l'interface.

RealImage.java

public class RealImage implémente l'image {

   fileName String privé;

   RealImage publique (String fileName) {
      this.fileName = fileName;
      loadFromDisk (fileName);
   }

   @Override
   affichage public void () {
      System.out.println ( "Résultats" + fileName);
   }

   vide loadFromDisk privé (String fileName) {
      System.out.println ( "Chargement" + fileName);
   }
}

ProxyImage.java

public class ProxyImage implémente l'image {

   privé RealImage realImage;
   fileName String privé;

   ProxyImage publique (String fileName) {
      this.fileName = fileName;
   }

   @Override
   affichage public void () {
      if (realImage == null) {
         realImage = new RealImage (fileName);
      }
      realImage.display ();
   }
}

Etape 3

Lorsque demandé, utilisezProxyImagepour obtenir objet de classeRealImage.

ProxyPatternDemo.java

public class ProxyPatternDemo {
	
   main (String [] args) {public static void
      Image image = new ProxyImage ( "de test_10mb.jpg");

      // Charger l'image à partir du disque image.display (); 
      System.out.println ( "");
      // Les images ne peuvent pas être chargés à partir du disque image.display (); 	
   }
}

Etape 4

Vérifiez la sortie.

Chargement test_10mb.jpg
Affichage test_10mb.jpg

Affichage test_10mb.jpg