code java qui implémente la conception des modèles de mode proxy

/ * Modèle Agent
*
* Vie:
* (1) ne convient pas de faire leurs propres choses, par exemple: aller à l' étranger pour trouver des locataires d'achat pour acheter une maison, et ainsi de suite ...
* 1, le mode proxy
* (1) Thème Interface: Nécessite la classe proxy avec le ustensiles de classe d'agent de la même interface, par exemple: l'interface DAO
* (2) le courtier
* (3) courtier
* doit avoir une référence dans le courtier
*
* 2, le mode proxy statique
* inconvénients: une classe proxy pour seulement thèmes intérimaires (interfaces) le travail intérimaire
*
* 3, le mode proxy dynamique
* avantages: un travail d'agence de traitement, peut travailler pour l' agence multiples sujets agents, le travail intérimaire ne peut être contenu que.
* Nécessite:
* (1) la préparation d'un processeur de classe de travail d' agent, cette classe doit implémenter un InvocationHandler d'interface
* (2) avec le JDK fournit une classe de proxy pour créer une classe de proxy de l' objet
* (3) appeler la méthode

Exemple: statique Proxy

l' interface A {
  de void run ();
}

classe B implémente un {
  @Override
  public void run () {
    for (int i = 0; i <1000; i ++) {
      System.out.println (i);
    }
  }
}

classe A StaticProxy implémente {
  privé A a;
  StaticProxy publique (A a) {
    this.a = a;
  }

  @Override
  RUN void {() publique
    System.out.println ( "méthode RUN"); exécute
    long Start = System.currentTimeMillis ();
    a.run ();
    extrémité longue = System.currentTimeMillis ();
    System.out.println ( "temps d'exécution:" + (fin - Start));
    System.out.println ( "méthode RUN a terminé son exécution");
  }
}

l'utilisation de l'agent statique :. New StaticProxy (nouveau B ()) run ()

 

Exemple: Dynamic Proxy

Interface C {
  de void run ();
}

C {CImpl les outils classe
  @Override
  RUN public void () {
    System.out.println ( "Interface RUN mise en œuvre Méthode C");
  }
}

de la classe DynamicProxy InvocationHandler {

  // l'objet proxy
  privé Object obj;
  DynamicProxy public (Object obj) {
    this.obj = obj;
  }

  

  / *
  Paramètre * A: la classe proxy d'objet
  * Paramètres II: La méthode à exécuter par le courtier
  * trois paramètres: la méthode est courtier pour exécuter la liste d'arguments requis
  * Cette méthode est un programme appelé, est la méthode est appelée automatiquement lorsqu'un objet sera exécuté classe proxy
  * /

  @Override
  publique invocation de l' objet (proxy de l' objet, méthode Méthode, Object [] args) lance Throwable {
    System.out.println (method.getName () + "方法执行");
    longue start = System.currentTimeMillis ();
    Objet de l' objet = method.invoke (obj, args);
    à long terme (= System.currentTimeMillis);
    System.out.println ( "执行时间:" + (fin - début));
    System.out.println (method.getName () + "方法执行结束");
    objet de retour;
  }
}

Agent dynamique utilise:

public class TestProxy2 {
  public static void main (String [] args) {
    Classe clazz = CImpl.class;
    ClassLoader loader = clazz.getClassLoader ();
    Class [] = interfaces clazz.getInterfaces ();
    C = proxy (C) Proxy.newProxyInstance (chargeur, interfaces, nouveau DynamicProxy (clazz));
    proxy.run ();

  }

}

Je suppose que tu aimes

Origine www.cnblogs.com/dirsoen/p/12642747.html
conseillé
Classement