Maison  >  Article  >  Java  >  Apprentissage du mode proxy Java

Apprentissage du mode proxy Java

黄舟
黄舟original
2017-10-13 10:31:531003parcourir

Cet article présente principalement en détail les informations pertinentes sur le mode proxy dans l'apprentissage des modèles de conception Java. Il a une certaine valeur de référence. Les amis intéressés peuvent se référer à

Mode proxy (Proxy) : fournit un proxy pour d'autres objets. pour contrôler l'accès à cet objet.

Schéma de structure du mode agence

Exigences de simulation : Xiao Zhang de la classe 3 aime Xiao Hong de la classe 1, mais ne connaît pas Xiao Hong, alors il confie à Xiao Ming de la Classe 1 de lui offrir Petit cadeau rouge.

1 : Créez une interface que Xiao Zhang et Xiao Ming peuvent implémenter.


package ProxyModel;

/**
 * 总的接口
 * @author 我不是张英俊
 *
 */
interface ISendGift {

  void GiveDolls();
  void GiveFlowers();
  void GiveChocolate();
}

2 : Autoriser Xiao Zhang à envoyer des cadeaux.


package ProxyModel;

/**
 * 
 * 小张是送鲜花的本体,送其实是小张送的,小明只是借助小张的送的鲜花去给小红
 * @author 我不是张英俊
 *
 */
public class Pursuit implements ISendGift{

  String mm;
  public Pursuit(String mm){
    this.mm=mm;
  }
  @Override
  public void GiveDolls() {
    // TODO Auto-generated method stub
    System.out.println("送"+mm+"洋娃娃");
  }

  @Override
  public void GiveFlowers() {
    // TODO Auto-generated method stub
    System.out.println("送"+mm+"鲜花");
  }

  @Override
  public void GiveChocolate() {
    // TODO Auto-generated method stub
    System.out.println("送"+mm+"巧克力");
  }

}

3 : Réalisez le cadeau envoyé par Xiao Ming via Xiao Zhang et transférez-le à Xiao Hong.


package ProxyModel;

/**
 * 小明转送小红礼物的完成方法,其实是借助小张送的礼物来完成的,此处小明即为代理
 * @author 我不是张英俊
 *
 */
public class Proxy implements ISendGift{

  Pursuit gg;
  public Proxy(String mm){
    gg=new Pursuit(mm);
  }
  
  @Override
  public void GiveDolls() {
    // TODO Auto-generated method stub
    gg.GiveDolls();
  }

  @Override
  public void GiveFlowers() {
    // TODO Auto-generated method stub
    gg.GiveFlowers();
  }

  @Override
  public void GiveChocolate() {
    // TODO Auto-generated method stub
    gg.GiveChocolate();
  }

}

4 : Classe de test :


package ProxyModel;

/**
 * 需求,3班小张喜欢1班小红,但是不认识小红,委托1班小明给小红送东西
 * 总结:小张送小红礼物,小张送,然后小明通过小张接过送的礼物,给小红,
 * 其实小明是借助小张送的礼物,来代理完成送礼物的操作。
 * 代理模式
 * @author 我不是张英俊
 *
 */
public class test {

  public static void main(String[] args) {
    String mm="小红";
    Proxy xiaoming=new Proxy(mm);
    xiaoming.GiveDolls();
    xiaoming.GiveFlowers();
    xiaoming.GiveChocolate();

  }

}

5 : Console

Envoyer une petite poupée rouge
Envoyer une petite fleur rouge
Envoyer un peu de chocolat rouge

Résumé :

Scénarios d'application pour le mode proxy

1 : proxy distant, c'est-à-dire fournissant des représentations locales d'un objet dans différents espaces d'adressage. Cela masque le fait qu'un objet existe dans un espace d'adressage différent.

2 : Les agents virtuels sont des objets coûteux à créer selon les besoins. Utilisez-le pour stocker des objets réels qui prennent beaucoup de temps à instancier.

3 : Proxy de sécurité, utilisé pour contrôler les autorisations lors de l'accès à des objets réels.

4 : Le guidage intelligent signifie que lorsque l'objet réel est appelé, l'agent gère d'autres choses.

Avantages :

1 : Le mode proxy peut coordonner l'appelant et l'appelé, réduisant dans une certaine mesure le couplage du système

2 : L'objet proxy peut be Il agit comme intermédiaire entre le client et l'objet cible, protégeant ainsi l'objet cible.

Inconvénients :

1 : En raison de l'ajout d'un objet proxy entre le client et l'objet réel, certains types de modes proxy peuvent entraîner un ralentissement de la vitesse de traitement des requêtes

;

2 : La mise en œuvre de modèles de proxy nécessite un travail supplémentaire et la mise en œuvre de certains modèles de proxy est très complexe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn