Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що робить патерн Proxy?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Proxy (Заступник)** - це **структурний патерн**, що створює **замінний об'єкт**, який контролює доступ до іншого об'єкта. Він поводиться **так само, як оригінал**, але може **додавати додаткову поведінку** - кешування, безпеку, логування, ліниве завантаження тощо. **Ключове:** Proxy - це "розумне посилання" на реальний об'єкт, яке перехоплює виклики і вирішує, передати їх справжньому об'єкту чи обробити самостійно.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення**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** - це об'єкт-посередник, який **заміщує реальний об'єкт**, перехоплює звернення до нього і **контролює доступ, виконання або кешування**, при цьому для клієнта залишається **прозорим і сумісним** за інтерфейсом.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.