Home  >  Article  >  Java  >  How to implement the proxy pattern in Java design patterns

How to implement the proxy pattern in Java design patterns

王林
王林forward
2023-05-13 18:34:06909browse

What is the proxy mode

Definition of proxy mode: For some reasons, it is necessary to provide a proxy for an object to control access to the object. At this time, the access object is not suitable or cannot directly reference the target object, and the proxy object acts as an intermediary between the access object and the target object.

Advantages

1. The proxy mode plays an intermediary role between the client and the target object and protects the target object;

2. The proxy object can expand the target The function of the object;

3. The proxy mode can separate the client from the target object, which reduces the coupling of the system to a certain extent and increases the scalability of the program

Disadvantages

1. The proxy mode will increase the number of classes in the system design

2. Adding a proxy object between the client and the target object will cause the request processing speed to slow down;

3. Increases the complexity of the system;

Knowledge points

The structure of the agent mode is relatively simple, mainly by defining an agent that inherits the abstract topic to include the real topic, thereby realizing the To access real topics, let’s analyze its basic structure and implementation methods.

Agency model implementation

Case: Da Ben Dai Ganniang sells wine

Abstract subject (Subject) class: selling wine

Real Subject ) Category: Godmother’s tavern

Proxy Category: Da Ben’s wine stall

Da Ben came to set up a stall in front of Godmother’s tavern to sell wine as a proxy.

selling wine

A wine-selling interface declares an abstract method for selling wine

public interface Jiu {
    void show();
}

Godmother’s tavern

Godmother’s tavern class implementation Developed an interface for selling wine, implemented the show() wine selling method, declared a wine name, and an aa() method to prompt Da Ben to set up a stall

public class GanNiang implements Jiu {
    private String name;
    GanNiang() {
    }
    GanNiang(String name) {
        this.name = name;
        aa();
    }
    @Override
    public void show() {
        System.out.printf("卖出一坛%s", name);
    }
    public void aa() {
        System.out.println("大奔来摆摊了");
    }
}

Da Ben’s wine stall

Daben’s wine stall class implements the wine selling interface, declares the name of the wine and the attributes of Ganniang Tavern, and implements the wine selling method.

public class DaBen implements Jiu {
    private String name;
    private GanNiang ganNiang;
    DaBen() {
    }
    DaBen(String name) {
        this.name = name;
    }
    @Override
    public void show() {
        if (ganNiang == null) {
            ganNiang = new GanNiang(name);
        }
        ganNiang.show();
    }
}

Test

new A big wine stall, calling the show() method twice is equivalent to selling wine twice.

public class Demo {
    public static void main(String[] args) {
        DaBen daBen = new DaBen("女儿红");
        daBen.show();
        System.out.println();
        System.out.println();
        daBen.show();
    }
}

How to implement the proxy pattern in Java design patterns

It can be seen here that the output results of the first time selling wine and the second time selling wine are different, because every time you sell wine, you have to go to the godmother’s tavern to get it. liquor. When Da Ben came to get the wine for the first time, he informed his godmother that I was here to set up the stall. Later, the godmother already knew that Da Ben was coming, so there was no need to notify him when he got the wine again.

The above is the detailed content of How to implement the proxy pattern in Java design patterns. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete