Maison > Java > javaDidacticiel > le corps du texte

Maîtrisez facilement le mode proxy Java

高洛峰
Libérer: 2017-02-07 13:15:12
original
1105 Les gens l'ont consulté

Définition : Fournir un proxy pour d'autres objets afin de contrôler l'accès à cet objet. Dans certains cas, un objet ne convient pas ou ne peut pas référencer directement un autre objet, et un objet proxy peut servir d'intermédiaire entre le client et l'objet cible.

Caractéristiques :

1. Le véritable rôle est de mettre en œuvre la logique métier réelle. Vous n'avez pas à vous soucier d'autres questions qui ne relèvent pas de vos responsabilités. le dernier agent, et le résultat qui l'accompagne est la programmation. Soyez concis et clair.

2. L'objet proxy peut agir comme intermédiaire entre le client et l'objet cible, jouant ainsi le rôle d'intermédiaire et protégeant l'objet cible.

3. Haute évolutivité

Développement et applications au niveau de l'entreprise dans des frameworks communs : le plus connu est l'aop de Spring, et la création de bean de Spring utilise en fait des proxys

Le mode proxy est divisé en proxy dynamique et proxy statique. Le proxy dynamique est particulièrement utilisé dans le développement.

Procuration statique :

/**
 * 以买房举例
 */
interface Actions {
 
 /**
 * 选房
 */
 public void selectHouse();
  
 /**
 * 看房
 */
 public void seeHouse();
  
 /**
 * 入住
 */
 public void ruzhu();
  
}
 
class RealRole implements Actions{
 
 public void selectHouse() {
 System.out.println("用户自己选房");
 }
 
 public void seeHouse() {
 System.out.println("用户自己看房");
 }
 
 public void ruzhu() {
 System.out.println("用户自己入住");
 }
 
}
 
class ProxyRole implements Actions{
 
 private RealRole realRole;
  
 public ProxyRole(RealRole realRole) {
 this.realRole = realRole;
 }
  
 public void selectHouse() {
 System.out.println("中介选房");
 }
 
 public void seeHouse() {
 System.out.println("中介看房");
 }
 
 @Override
 public void ruzhu() {
 realRole.ruzhu();
 }
 
}
 
public class Demo {
 
 public static void main(String[] args) {
 RealRole realRole = new RealRole();
 ProxyRole proxyRole = new ProxyRole(realRole);
 proxyRole.selectHouse();
 proxyRole.seeHouse();
 proxyRole.ruzhu();
 }
}
Copier après la connexion

Procuration dynamique :

/**
 * 以买房举例
 */
interface Actions {
 
 /**
 * 选房
 */
 public void selectHouse();
  
 /**
 * 看房
 */
 public void seeHouse();
  
 /**
 * 入住
 */
 public void ruzhu();
  
}
 
class RealRole implements Actions{
 
 public void selectHouse() {
 System.out.println("用户自己选房");
 }
 
 public void seeHouse() {
 System.out.println("用户自己看房");
 }
 
 public void ruzhu() {
 System.out.println("用户自己入住");
 }
 
}
 
class Handler implements InvocationHandler{
 
 private RealRole realRole ;
  
 public Handler(RealRole realRole) {
 this.realRole = realRole;
 }
  
 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
 System.out.println(realRole);
 System.out.println("中介选房,看房");
 method.invoke(realRole, args);
 return null;
 }
 
}
 
public class Demo {
 
 public static void main(String[] args) {
 RealRole realRole = new RealRole();
  
 Handler handler = new Handler(realRole);
  
 Actions proxy = (Actions) Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), new Class[]{Actions.class}, handler);
 proxy.ruzhu();
 }
}
Copier après la connexion

Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun, et j'espère que vous en apprendrez davantage. Supportez le site Web chinois PHP.

Pour plus d'articles sur la maîtrise facile du mode proxy Java, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal