Паттерн проектирования "Приспособленец" (Flyweight) | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Python Developer. Basic Специализация Python Developer
-25%
iOS Developer. Professional Архитектура и шаблоны проектирования Scala-разработчик Python Developer. Professional JavaScript Developer. Professional Программист С Kotlin Developer. Basic Android Developer. Basic Node.js Developer Специализация Java-разработчик
-25%
PHP Developer. Basic C# Developer. Professional Symfony Framework Алгоритмы и структуры данных MS SQL Server Developer NoSQL Golang Developer. Professional Framework Laravel Разработчик программных роботов (RPA) на базе UiPath и PIX Kotlin Backend Developer C# ASP.NET Core разработчик Специализация Java и Базы данных Подготовка к сертификации Oracle Java Programmer (OCAJP) Unity Game Developer. Professional Специализация iOS Специализация C# Unreal Engine Technical Game Design Rust Developer
Специализации Курсы в разработке Подготовительные курсы Подписка
+7 499 938-92-02

Паттерн проектирования "Приспособленец" (Flyweight)

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

x_85f2f2f1_1-1801-633a8f.jpg

В качестве примера можно привести заказ молочного коктейля в кафе. Представьте, что вы отстояли большую очередь жарким летом и, наконец-то, добрались до прилавка, где заказали стакан коктейля. Продавец, получив очередной заказ, готовит не один стакан, а сразу большую емкость, взбивая коктейль на специальном оборудовании. Для чего это делается, я думаю, понятно -- сразу готовится коктейль и кому-нибудь еще, кто стоит в очереди за вами. Таким образом экономится не только время, но и ресурсы, например, электричество. Так вот, электрические ресурсы, которые делятся (sharing), в нашем случае и являются приспособленцами.

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

Если вернуться к программированию, то можно сказать, что "Приспособленец" применяется в целях минимизации использования памяти/вычислительной стоимости посредством разделения ресурсов с максимальным числом схожих объектов.

Давайте рассмотрим, как это выглядит в коде. Возьмем за основу последний пример с чаем. Итак, в самом начале у нас существуют различные виды -- это Tea и TeaMaker:

1-1801-8b5c9a.png

Кроме того, существует TeaShop, где заказы принимаются и обрабатываются:

2-1801-0a7ef3.png

Ну и непосредственный пример использования:

3-1801-52ffc0.png

Пожалуй, на этом все. Также вы можете посмотреть пример реализации шаблона "Приспособленец" на языке программирования Java.

flyweight_pattern_1-1801-b47d5a.png

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

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

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

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

Автор
0 комментариев
Для комментирования необходимо авторизоваться
🔥 Черная пятница!
Любой доступный курс OTUS можно купить со скидкой по промокоду — blacksale21