Шаблон декоратор (Decorator) | OTUS

Шаблон декоратор (Decorator)

Arch_headline_970x70-1801-410a68.png

Декоратор представляет собой структурный шаблон проектирования, который позволяет динамически подключать к объекту дополнительное поведение. По сути, это более гибкая альтернатива практике по созданию подклассов с целью расширения функциональности.

Но давайте приведем практический пример из жизни. Допустим, вы обладаете своим автосервисом. Каким образом вы станете рассчитывать сумму в счетах за оказываемые услуги? Как правило, вы выбираете одну услугу, после чего динамически добавляете к ней расценки на конкретные предоставляемые услуги, то есть пока не будет сформирована окончательная стоимость. И вот тут каждый тип услуги и будет декоратором.

Можно сказать еще проще: декоратор дает возможность динамически менять поведение объекта в процессе работы путем оборачивания в объект класса декоратора.

Но давайте лучше перейдем к коду. Теперь приведем пример с кофе. Итак, поначалу мы имеем простой Coffee и интерфейс, его реализующий:

1-1801-635bb3.png

Однако мы желаем сделать наш код расширяемым, дабы в случае надобности мы могли его менять. Следовательно, можно сделать ряд дополнений (то есть мы используем декораторы):

2-1801-c840a2.png

Ну а теперь мы уже можем готовить разный Coffee:

3-1801-8315e5.png

Вот и все. Если интересует, вот пример реализации на Java: https://github.com/iluwatar/java-design-patterns/tree/master/decorator.

Arch_headline_970x70-1801-410a68.png

По материалам https://github.com/kamranahmedse/design-patterns-for-humans.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто