Junior — Middle
What is the purpose of the Proxy pattern in software development?
sobes.tech AI
Answer from AI
The Proxy pattern is used to create a substitute (representative) for another object that controls access to that object. This allows:
- Delaying the creation of a resource-intensive object (lazy initialization).
- Controlling access (e.g., permission checks).
- Logging calls.
- Caching results.
In Java, Proxy is often implemented through interfaces or dynamic proxies.
Example: if you have an object that loads data from the network, a Proxy can first check the cache and return data from there without accessing the network.
interface Image {
void display();
}
class RealImage implements Image {
private String filename;
public RealImage(String filename) {
this.filename = filename;
loadFromDisk();
}
private void loadFromDisk() {
System.out.println("Loading " + filename);
}
public void display() {
System.out.println("Displaying " + filename);
}
}
class ProxyImage implements Image {
private RealImage realImage;
private String filename;
public ProxyImage(String filename) {
this.filename = filename;
}
public void display() {
if (realImage == null) {
realImage = new RealImage(filename); // lazy loading
}
realImage.display();
}
}
Here, ProxyImage controls the creation of RealImage and can optimize its usage.