Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Чим «Proxy» відрізняється від «Декоратора»?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Proxy (Заступник)** і **Decorator (Декоратор)** зовні схожі - обидва "обгортають" об'єкт і реалізують той самий інтерфейс. Але їхні **цілі та смислові задачі різні**. **Ключове:** Proxy контролює доступ до об'єкта, тоді як Decorator розширює його поведінку, додаючи нову функціональність поверх наявної.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення**Proxy (Заступник)** і **Decorator (Декоратор)** зовні схожі - обидва "обгортають" об'єкт і реалізують той самий інтерфейс. Але їхні **цілі та смислові задачі різні**. --- ### 1. **Мета** - **Proxy** - **контролює доступ** до об'єкта. → вирішує *коли*, *як* і *чи можна* викликати справжній об'єкт. - **Decorator** - **розширює поведінку** об'єкта. → додає нову функціональність *поверх* наявної. --- ### 2. **Контекст використання** | Ситуація | Proxy | Decorator | |---|---|---| | Об'єкт важкий або віддалений | Ленива загрузка, кеш | Не призначений для цього | | Потрібно додати нову поведінку (логування, шифрування) | Можливо, але не основне | Основна мета | | Контроль доступу / безпека | Так | Ні | | Клієнт повинен думати, що працює зі "справжнім об'єктом" | Обов'язково | Не завжди | --- ### 3. **Приклад відмінності** **Proxy (контроль доступу):** ```java class SecuredFileProxy implements FileAccess { private RealFile realFile; private String userRole; public void read() { if (userRole.equals("admin")) realFile.read(); else System.out.println("Доступ заборонено"); } } ``` **Decorator (розширення поведінки):** ```java class LoggingFileDecorator implements FileAccess { private FileAccess wrappee; public void read() { System.out.println("Читання файлу..."); wrappee.read(); } } ``` --- ### 4. **Прозорість** - **Proxy** прагне бути *непомітним*: клієнт не повинен знати, що працює з посередником. - **Decorator** - *усвідомлена обгортка*: клієнт знає, що додано нову поведінку. --- ### 5. **Аналогія** - **Proxy** - як **охоронець біля дверей**, вирішує, кого впустити. - **Decorator** - як **дизайнер**, прикрашає кімнату, не змінюючи її основу. --- ### **Висновок** | Критерій | Proxy | Decorator | |---|---|---| | Основна мета | Контроль доступу | Розширення поведінки | | Прозорість для клієнта | Повна | Часткова | | Тип поведінки | Керувальне | Додаткове | | Приклад | Лінива загрузка, захист, кеш | Логування, шифрування, форматування | **Підсумок:** **Proxy** захищає або керує, **Decorator** додає і прикрашає.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.