Що робить патерн Proxy?
Proxy (Заступник) - це структурний патерн, що створює замінний об'єкт, який контролює доступ до іншого об'єкта. Він поводиться так само, як оригінал, але може додавати додаткову поведінку - кешування, безпеку, логування, ліниве завантаження тощо.
1. Суть ідеї
Клієнт працює не з реальним об'єктом, а з його "представником" - проксі. Цей проксі перехоплює виклики і вирішує, передати їх справжньому об'єкту чи обробити самостійно.
Простіше кажучи: Proxy - це «розумне посилання» на реальний об'єкт.
2. Коли використовується
- Контроль доступу - перевірка прав перед зверненням до ресурсу.
- Лінива ініціалізація - об'єкт створюється тільки за першого використання.
- Віддалений доступ (Remote Proxy) - звернення до об'єкта на іншому сервері.
- Кешування - зберігання результатів викликів для повторного використання.
- Захист або логування - додавання шарів безпеки або аналітики.
3. Приклад (Java)
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("Завантаження: " + fileName);
}
public void display() {
System.out.println("Відображення: " + 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);
realImage.display();
}
}Використання:
Image img = new ProxyImage("photo.jpg");
img.display(); // завантажує за першого виклику
img.display(); // повторно без завантаження4. Переваги
- Контроль і оптимізація доступу до важких або віддалених ресурсів.
- Лінива ініціалізація економить пам'ять і час.
- Дозволяє додавати функціональність без зміни оригінального класу.
5. Висновок
Proxy - це об'єкт-посередник, який заміщує реальний об'єкт, перехоплює звернення до нього і контролює доступ, виконання або кешування, при цьому для клієнта залишається прозорим і сумісним за інтерфейсом.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.