Декоратор (шаблон проектування)
Матеріал з Вікіпедії — вільної енциклопедії.
Декоратор, Decorator — структурний шаблон проектування, призначений для динамічного підключення додаткових зобов'язань до об'єкту. Шаблон Декоратор надає гнучку альтернативу практиці визначення підкласів з метою розширення функціональності.
Зміст |
[ред.] Основні характеристики
[ред.] Завдання
Об'єкт, який передбачається використовувати, виконує основні функції. Проте може потрібно додати до нього деяку додаткову функціональність, яка виконуватиметься до або після основної функціональності об'єкту.
[ред.] Спосіб вирішення
Декоратор передбачає розширення функціональності об'єкту без визначення підкласів.
[ред.] Учасники
Клас ConcreteComponent — клас, в який за допомогою шаблону Декоратор додається нова функціональність. В деяких випадках базова функціональність надається класами, похідними від класу ConcreteComponent. У подібних випадках клас ConcreteComponent є вже не конкретним, а абстрактним. Абстрактний клас Component визначає інтерфейс для використання всіх цих класів.
[ред.] Наслідки
Функціональність, що додається, реалізується в невеликих об'єктах. Перевага полягає в можливості динамічно додавати цю функціональність або після основної функціональності об'єкту ConcreteComponent.
[ред.] Реалізація
Створюється абстрактний клас, що представляє як початковий клас, так і нові функції, що додаються в клас. У класах-декораторах нові функції викликаються в необхідній послідовності — до або після виклику подальшого об'єкту.
[ред.] Зауваження і коментарі
- Хоча об'єкт-декоратор може додавати свою функціональність або після функціональності основного об'єкту, ланцюжок створюваних об'єктів завжди повинен закінчуватися об'єктом класу
ConcreteComponent. - Базові класи мові Java широко використовують шаблон Декоратор для організації обробки операцій введення-висновку.

