Junior — Middle
W jaki sposób wzorzec Proxy działa jako pośrednik dla oryginalnego obiektu?
sobes.tech AI
Odpowiedź od AI
Wzorzec Proxy w Java działa jako pośrednik między klientem a oryginalnym obiektem. Proxy kontroluje dostęp do tego obiektu, może dodawać dodatkową logikę przed lub po wywołaniu metod oryginału, taką jak buforowanie, sprawdzanie uprawnień, leniwa inicjalizacja lub logowanie.
W ten sposób klient wchodzi w interakcję z Proxy tak samo jak z oryginalnym obiektem, ale Proxy zarządza wywołaniami i może zmieniać zachowanie bez modyfikacji samego oryginalnego obiektu.
Przykład:
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("Wczytywanie " + filename);
}
public void display() {
System.out.println("Wyświetlanie " + 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); // leniwa inicjalizacja
}
realImage.display();
}
}
// Użycie:
Image image = new ProxyImage("photo.jpg");
image.display(); // ładowanie i wyświetlanie
image.display(); // tylko wyświetlanie, bez ponownego ładowania
W tym przykładzie Proxy kontroluje tworzenie i dostęp do rzeczywistego obiektu, optymalizując zarządzanie zasobami.