HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: паттерн, декоратор, шаблон проектирования, структурные шаблоны</p>
1 <p>Теги: паттерн, декоратор, шаблон проектирования, структурные шаблоны</p>
2 <p><strong>Декоратор</strong>представляет собой структурный шаблон проектирования, который позволяет динамически подключать к объекту дополнительное поведение. По сути, это более гибкая альтернатива практике по созданию подклассов с целью расширения функциональности.</p>
2 <p><strong>Декоратор</strong>представляет собой структурный шаблон проектирования, который позволяет динамически подключать к объекту дополнительное поведение. По сути, это более гибкая альтернатива практике по созданию подклассов с целью расширения функциональности.</p>
3 <p>Но давайте приведем практический пример из жизни. Допустим, вы обладаете своим автосервисом. Каким образом вы станете рассчитывать сумму в счетах за оказываемые услуги? Как правило, вы выбираете одну услугу, после чего динамически добавляете к ней расценки на конкретные предоставляемые услуги, то есть пока не будет сформирована окончательная стоимость. И вот тут каждый тип услуги и будет<strong>декоратором</strong>.</p>
3 <p>Но давайте приведем практический пример из жизни. Допустим, вы обладаете своим автосервисом. Каким образом вы станете рассчитывать сумму в счетах за оказываемые услуги? Как правило, вы выбираете одну услугу, после чего динамически добавляете к ней расценки на конкретные предоставляемые услуги, то есть пока не будет сформирована окончательная стоимость. И вот тут каждый тип услуги и будет<strong>декоратором</strong>.</p>
4 <p>Можно сказать еще проще: декоратор дает возможность динамически менять поведение объекта в процессе работы путем оборачивания в объект класса декоратора.</p>
4 <p>Можно сказать еще проще: декоратор дает возможность динамически менять поведение объекта в процессе работы путем оборачивания в объект класса декоратора.</p>
5 <p>Но давайте лучше перейдем к коду. Теперь приведем пример с кофе. Итак, поначалу мы имеем простой<strong>Coffee</strong>и интерфейс, его реализующий:</p>
5 <p>Но давайте лучше перейдем к коду. Теперь приведем пример с кофе. Итак, поначалу мы имеем простой<strong>Coffee</strong>и интерфейс, его реализующий:</p>
6 <p>Однако мы желаем сделать наш код расширяемым, дабы в случае надобности мы могли его менять. Следовательно, можно сделать ряд дополнений (то есть мы используем<strong>декораторы</strong>):</p>
6 <p>Однако мы желаем сделать наш код расширяемым, дабы в случае надобности мы могли его менять. Следовательно, можно сделать ряд дополнений (то есть мы используем<strong>декораторы</strong>):</p>
7 <p>Ну а теперь мы уже можем готовить<strong><em>разный</em></strong><strong>Coffee</strong>:</p>
7 <p>Ну а теперь мы уже можем готовить<strong><em>разный</em></strong><strong>Coffee</strong>:</p>
8 <p>Вот и все. Если интересует, вот пример реализации на Java:<em>https://github.com/iluwatar/java-design-patterns/tree/master/decorator</em>.</p>
8 <p>Вот и все. Если интересует, вот пример реализации на Java:<em>https://github.com/iluwatar/java-design-patterns/tree/master/decorator</em>.</p>
9 <p><em>По материалам https://github.com/kamranahmedse/design-patterns-for-humans.</em></p>
9 <p><em>По материалам https://github.com/kamranahmedse/design-patterns-for-humans.</em></p>
10  
10