Skip to main content

Що робить патерн Proxy?

Proxy (Заступник) - це структурний патерн, що створює замінний об'єкт, який контролює доступ до іншого об'єкта. Він поводиться так само, як оригінал, але може додавати додаткову поведінку - кешування, безпеку, логування, ліниве завантаження тощо.


1. Суть ідеї

Клієнт працює не з реальним об'єктом, а з його "представником" - проксі. Цей проксі перехоплює виклики і вирішує, передати їх справжньому об'єкту чи обробити самостійно.

Простіше кажучи: Proxy - це «розумне посилання» на реальний об'єкт.


2. Коли використовується

  • Контроль доступу - перевірка прав перед зверненням до ресурсу.
  • Лінива ініціалізація - об'єкт створюється тільки за першого використання.
  • Віддалений доступ (Remote Proxy) - звернення до об'єкта на іншому сервері.
  • Кешування - зберігання результатів викликів для повторного використання.
  • Захист або логування - додавання шарів безпеки або аналітики.

3. Приклад (Java)

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(); } }

Використання:

java
Image img = new ProxyImage("photo.jpg"); img.display(); // завантажує за першого виклику img.display(); // повторно без завантаження

4. Переваги

  • Контроль і оптимізація доступу до важких або віддалених ресурсів.
  • Лінива ініціалізація економить пам'ять і час.
  • Дозволяє додавати функціональність без зміни оригінального класу.

5. Висновок

Proxy - це об'єкт-посередник, який заміщує реальний об'єкт, перехоплює звернення до нього і контролює доступ, виконання або кешування, при цьому для клієнта залишається прозорим і сумісним за інтерфейсом.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.