Deux cas vous amènent à comprendre le modèle de proxy statique

Qu'est-ce qu'un proxy statique?

Les agents dans la vie sont très courants, comme les achats, les avocats, les intermédiaires, etc. Ils ont tous une chose en commun: aider l'agent à gérer certaines choses avant et après. L'agent n'a qu'à se concentrer sur la partie de la chose qu'il veut faire.
L'agent en Java est similaire. Le modèle d'agent peut aider l'agent à effectuer certaines préparations préliminaires et des travaux ultérieurs, mais la logique métier principale est toujours terminée par l'agent.

Mode proxy

Premier cas

Location
1. Interface

//租房
public interface Rent {
    public void rent();
}

2. De vrais personnages

//房东
public class Host implements Rent {
    public void rent(){
        System.out.println("房东出租房子!");
    }
}

3. Rôle de l'agent

public class Proxy implements Rent {
    private Host host;

    public Proxy() {
    }
    public Proxy(Host host) {
        this.host = host;
    }

    public void rent(){
        seeHouse();
        host.rent();
        hetong();
        fee();
    }
    //看房
    public void seeHouse(){
        System.out.println("中介带你看房");
    }
    //签合同
    public void hetong(){
        System.out.println("签合同");
    }
    //收费
    public void fee(){
        System.out.println("收取中介费用");
    }
}

4. Accès client

public class Client {
    public static void main(String[] args) {
        //房东出租房子
        Host host = new Host();
        //代理,中介帮房东租房子,但是代理角色一般会有一些附属操作!
        Proxy proxy = new Proxy(host);
        proxy.rent();
    }
}

Cas 2

1. Interface

public interface UserService{
    void add();
    void delete();
    void update();
    void query();
}

2. De vrais personnages

public class UserServiceImpl implements UserService {
    public void add() {
        System.out.println("增加一个用户");
    }
    public void delete() {
        System.out.println("删除一个用户");
    }

    public void update() {
        System.out.println("修改一个用户");
    }
    public void query() {
        System.out.println("查询一个用户");
    }
}

3. Rôle de l'agent

public class UserServiceProxy implements UserService {

    private UserServiceImpl userService;

    public void setUserService(UserServiceImpl userService) {
        this.userService = userService;
    }
    @Override
    public void add() {
        log("add");
        userService.add();
    }
    @Override
    public void delete() {
        log("delete");
        userService.delete();
    }
    @Override
    public void update() {
        log("update");
        userService.update();
    }
    @Override
    public void query() {
        log("query");
        userService.query();
    }
    //日志方法
    public void log(String msg) {
        System.out.println("使用了" + msg + "方法");
    }
}

4. Accès client

public class Client {
    public static void main(String[] args) {
        UserServiceImpl userService = new UserServiceImpl();
        UserServiceProxy proxy = new UserServiceProxy();
        proxy.setUserService(userService);
        proxy.query();
    }
}

Résumé:

Les avantages du modèle proxy:

  • Peut rendre le fonctionnement de vrais personnages plus pur, sans avoir à prêter attention à certaines affaires publiques
  • Le public sera remis au rôle d'agent, réalisant la division des affaires
  • Gestion centralisée pratique lorsque les services publics sont étendus

Inconvénients du mode proxy:

  • Un vrai rôle produira un rôle d'agent, la quantité de code doublera et l'efficacité du développement diminuera
A publié 51 articles originaux · Aime 73 · Visites 3700

Je suppose que tu aimes

Origine blog.csdn.net/qq_41256881/article/details/105430183
conseillé
Classement