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.
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
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;
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.
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.
A wine-selling interface declares an abstract method for selling wine
public interface Jiu { void show(); }
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("大奔来摆摊了"); } }
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(); } }
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(); } }
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!