JavaScript Паттерны #12 - Flyweight (Легковес)
Вставка
- Опубліковано 5 лют 2025
- #YauhenK #webDev #JS #JSPatterns
Всех приветствую в курсе «JavaScript Паттерны».
В данном видео-курсе мы с вами рассмотрим самые распространённые паттерны проектирования, которые используются при разработке.
Паттерны, или шаблоны - это определённые, зарекомендовавшие себя конструкции, которые служат для решения типовых задач программирования.
Рассматривать мы их с вами будем на примере языка JavaScript в синтаксисе ES6.
✒ Репозиторий курса:
✔ GitHub: github.com/Yau...
✒ Используемые ресурсы и инструменты:
✔ Carbon (Screenshots): carbon.now.sh/
✒ Полезные ссылки:
✔ ES6: • ES6
✒ Полный список готовых и планируемых курсов:
✔ Trello: trello.com/b/R...
✒ Автор курса:
✔ UA-cam: / yauhenkavalchuk
✔ Instagram: / yauhenkavalchuk
✔ Twitter: / yauhenkavalchuk
✔ VK: YauhenK...
✔ LinkedIn: / yauhenkavalchuk
✔ GitHub: github.com/Yau...
✔ VK (Группа): webdevcom
✒ Поддержать развитие канала: github.com/Yau...
Круто, что ролики ёмкие и короткие. Благодарю 👍🏻
Пожалуйста
Странно что так мало смотрят, качественный контент, спасибо!
Спасибо большое за поддержку!
это же классика, посмотрите сколько человек посмотрело первое видео ))) до последнего доживают не все )
Я эту штуку использовал для кеширования сокетов, и только сейчас узнал как она называется)
бро, ты лучший)
Спасибо
Спасибо.
Пожалуйта)
Оч понравилось
Отлично
К слову говоря, это же почти как аналог new Set? В плане туда же тоже если уже положил данные они становятся уникальными и не могут повторяться, и поэтому на выходе мы тоже получим такой же результат
Ну, что-то вроде того)
Это не легковес, это только Фабрика
🤔
Это было бы просто фабрикой, если бы не было проверки на наличие и выдачи уже созданной модели запрошенного типа (name).
@@Vishtar_Official Это фабрика с кешированием. В книге Design Patterns явно приводится UML схема паттерна, и она не соответствует видео. Идея легковеса - разделить данные модели на общую часть (intrinsic) и уникальную часть (extrinsic), при этом поведение не отличалось бы от обычной плоской модели данных. И уже только после этого используется фабрика легковесов, где легковес - обертка вокруг общей части. В вашем примере на видео нет смысла - мы кешируем вообще все модели, в то время как нам необходимо кешировать только общую часть. При вашем подходе мы забьем оперативную память очень быстро, и пользы при этом не будет.
Спасибо за эту серию видео по паттернам, единственное что хотел спросить - в начале было сказано что данные легковеса должны быть запротекчены от изменения, но при таком исполнении я имею прямой доступ к полю model и соответственно могу его изменить, и эти изменения коснутся всех остальных объектов созданных допустим с моделью 'tesla'. Это просто для облегчения понимания примера сделано ?
да
webDev в конструкторе AutoFactory параметр name лишний =)
возможно
Это обычное кэширование, или нет?
Что-то похоже есть
Есть подобный пример на Typescript ?
К сожалению, нет
Отличное видео! Один вопрос: почему не указываете второе название, которое используется в русскоязычном пространстве, а именно "Приспособленец"?
Указывается, посмотрите название видео. Я написал, как "Легковес"
Странное название. Непонятно откуда оно взялось
А в чем разница между паттернами мемо и легковес? А то я лично не заметил вообще разницы
Memo - позволяет хранить предыдущее состояние объектов и при необходимости восстанавливать его. А легковес - создаёт объект, который будет хранить общие структуры данных для других объектов.
@@YauhenKavalchukИ где в видео общая структура данных ? В примере вы используете только строку в качестве модели данных. Главная идея паттерна Memo - мы можем делать снимок объекта, не получая доступ к закрытым его частям - это важный нюанс, который определяет реализацию паттерна.