Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що спільного у «Декоратора» і «Wrapper»?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Decorator** і **Wrapper** (обгортка) - це майже одне й те саме за структурою: в обох випадках об'єкт **обгортається іншим об'єктом**, який **перехоплює виклики** і **додає додаткову поведінку**. **Ключове:** декоратор - це окремий випадок обгортки, спеціалізований на додаванні нової поведінки, тоді як wrapper - більш загальний термін для будь-якої прошарку, що перехоплює і делегує виклики.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення**Decorator** і **Wrapper** (обгортка) - це майже одне й те саме за структурою: в обох випадках об'єкт **обгортається іншим об'єктом**, який **перехоплює виклики** і **додає додаткову поведінку**. --- ### 1. **Спільна ідея** - Обидва патерни використовують **композицію**: зберігають усередині посилання на "обгорнутий" об'єкт. - Обидва реалізують **той самий інтерфейс**, що й оригінал, щоб клієнт не помічав різниці. - Обидва делегують виклики оригінальному об'єкту, додаючи щось "поверх". --- ### 2. **Приклад спільного підходу** ```java class Wrapper implements Service { private Service wrappee; public Wrapper(Service s) { this.wrappee = s; } public void execute() { System.out.println("Before"); wrappee.execute(); System.out.println("After"); } } ``` Таку структуру можна назвати і **декоратором**, і **обгорткою**: різниця лише в меті. --- ### 3. **Різниця в акценті** | Критерій | Decorator | Wrapper | |---|---|---| | Мета | Розширити функціональність | Ізолювати, спростити або приховати деталі | | Використовується в | Шаблонах проєктування | Загальному програмуванні | | Семантика | «Додати поведінку» | «Обгортати для контролю доступу, адаптації або захисту» | --- ### 4. **Приклад відмінності** - **Decorator:** додає логування, шифрування, кешування. - **Wrapper:** приховує складність API або формат даних (наприклад, `HttpResponseWrapper`). --- **Висновок:** **Декоратор - це окремий випадок обгортки**, спеціалізований на **додаванні нової поведінки**, тоді як **wrapper** - більш загальний термін для будь-якого прошарку, що **перехоплює і делегує виклики** базовому об'єкту.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.