Modèle d'agent du modèle de conception
1. Mode proxy
1.1 Définition et caractéristiques
Définition du mode proxy: Pour une raison quelconque, un agent doit être fourni à un objet pour contrôler l'accès à l'objet. À ce stade, l'objet d'accès ne convient pas ou ne peut pas se référer directement à l'objet cible, et l'objet proxy agit comme intermédiaire entre l'objet d'accès et l'objet cible.
Les principaux avantages du modèle proxy sont:
- Le mode proxy joue un rôle d'intermédiaire entre le client et l'objet cible et protège l'objet cible;
- L'objet proxy peut étendre la fonction de l'objet cible;
- Le mode proxy peut séparer le client de l'objet cible, ce qui réduit dans une certaine mesure le couplage du système;
Les principaux inconvénients sont:
- L'ajout d'un objet proxy entre le client et l'objet cible entraînera un ralentissement de la vitesse de traitement des demandes;
- Augmentation de la complexité du système;
1.2 Structure du modèle
Les principaux rôles du modèle proxy sont les suivants.
- Classe Subject subject (Subject): Déclare les méthodes métier implémentées par des sujets réels et des objets proxy via des interfaces ou des classes abstraites.
- Classe de sujet réel: réalise l'entreprise spécifique dans le sujet abstrait, est l'objet réel représenté par l'objet proxy et est l'objet à référencer éventuellement.
- Classe Proxy (Proxy): fournit la même méthode que le thème réel, qui contient des références au thème réel, il peut accéder, contrôler ou étendre les fonctionnalités du thème réel.
1.3 Diagramme UML
1.4 Origine du problème
Par exemple, dans la vie, une star très chaude, il y a beaucoup de gens qui veulent chanter et danser, si tout le monde vient directement à la star, alors la star sera trop occupée avec ce genre de chose, si vous voulez le résoudre, vous devez passer Une autre personne est venue l'aider à traiter spécifiquement avec lui, cette personne est l'agent. En termes de conception de code, il est inapproprié ou ne peut pas accéder directement à l'objet cible.
1.5 Solution
La raison pour laquelle un objet proxy est généré en cours de développement est principalement utilisée pour intercepter / bloquer l'accès à des objets métier réels. L'objet proxy doit avoir la même méthode que l'objet cible.
1.6 Solution
/**
* @author 26530
* 节目单
*/
public interface Programme
{
/**
* 唱歌
*/
void sing();
/**
* 跳舞
*/
void dance();
}
public class Middleman implements Programme
{
private Star star ;
@Override
public void sing()
{
star.sing();
}
public Middleman() {
super();
// TODO Auto-generated constructor stub
}
public Middleman(Star star) {
super();
this.setStar(star);
}
@Override
public void dance()
{
star.dance();
}
public Star getStar() {
return star;
}
public void setStar(Star star) {
this.star = star;
}
}
public class Star implements Programme{
@Override
public void sing()
{
System.out.println("明星唱歌");
}
@Override
public void dance()
{
System.out.println("明星跳舞");
}
}
public class Test
{
public static void main(String[] args)
{
//某地找刘德华唱歌,跳舞,只要找到经纪人,和他签下唱歌,跳舞合同,就可以了。
Middleman middleman = new Middleman();
Star star = new Star();
middleman.setStar(star);
middleman.dance();//经纪人跳舞就是刘德华跳舞
middleman.sing();
}
}