Декоратор (Decorator) — различия между версиями
Материал из Вики ИТ мехмата ЮФУ
Admin (обсуждение | вклад) (→Диаграмма классов) |
Admin (обсуждение | вклад) (→Описание) |
||
Строка 8: | Строка 8: | ||
=== Описание === | === Описание === | ||
+ | В некоторых ситуациях необходимо возложить дополнительные обязанности на объект, а не на класс в целом. Решения на основе наследования - статические, т.е. принимаемые на этапе компиляции, и поэтому не являются достаточно гибкими. | ||
=== Реализация === | === Реализация === |
Версия 07:59, 4 августа 2014
Другое название
Обертка (Wrapper)
Назначение
Динамически добавляет объекту новые свойства (без использования наследования, на этапе выполнения).
Описание
В некоторых ситуациях необходимо возложить дополнительные обязанности на объект, а не на класс в целом. Решения на основе наследования - статические, т.е. принимаемые на этапе компиляции, и поэтому не являются достаточно гибкими.
Реализация
Диаграмма классов
Участники
Пример
Пример. В Java - разновидности файловых потоков. К стандартному файловому потоку могут быть добавлены декораторы буферизации, шифрования, архивации и проч. в любых комбинациях.
Декоратор принимает отдекорированный предыдущими декораторами объект и возвращает объект с дополнительной декорацией.
Пример. Фримен. Кофе и дополнения: шоколад, ваниль, молоко, пена...