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...

КОМЕНТАРІ • 32

  • @MsZastra
    @MsZastra 4 роки тому +6

    Круто, что ролики ёмкие и короткие. Благодарю 👍🏻

  • @DmitryPopovFreeWind
    @DmitryPopovFreeWind 5 років тому +12

    Странно что так мало смотрят, качественный контент, спасибо!

    • @YauhenKavalchuk
      @YauhenKavalchuk  5 років тому +1

      Спасибо большое за поддержку!

    • @yurii873
      @yurii873 4 роки тому +4

      это же классика, посмотрите сколько человек посмотрело первое видео ))) до последнего доживают не все )

  • @СергейВасильев-я7р
    @СергейВасильев-я7р 5 років тому +2

    Я эту штуку использовал для кеширования сокетов, и только сейчас узнал как она называется)

  • @azil2024
    @azil2024 3 роки тому

    бро, ты лучший)

  • @yurii873
    @yurii873 4 роки тому

    Спасибо.

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil 2 роки тому

    Оч понравилось

  • @cyrilmialik5030
    @cyrilmialik5030 5 років тому +2

    К слову говоря, это же почти как аналог new Set? В плане туда же тоже если уже положил данные они становятся уникальными и не могут повторяться, и поэтому на выходе мы тоже получим такой же результат

  • @TheBabbl978
    @TheBabbl978 Рік тому +2

    Это не легковес, это только Фабрика

    • @YauhenKavalchuk
      @YauhenKavalchuk  Рік тому

      🤔

    • @Vishtar_Official
      @Vishtar_Official Рік тому

      Это было бы просто фабрикой, если бы не было проверки на наличие и выдачи уже созданной модели запрошенного типа (name).

    • @TheBabbl978
      @TheBabbl978 Рік тому +5

      ​@@Vishtar_Official Это фабрика с кешированием. В книге Design Patterns явно приводится UML схема паттерна, и она не соответствует видео. Идея легковеса - разделить данные модели на общую часть (intrinsic) и уникальную часть (extrinsic), при этом поведение не отличалось бы от обычной плоской модели данных. И уже только после этого используется фабрика легковесов, где легковес - обертка вокруг общей части. В вашем примере на видео нет смысла - мы кешируем вообще все модели, в то время как нам необходимо кешировать только общую часть. При вашем подходе мы забьем оперативную память очень быстро, и пользы при этом не будет.

  • @ivankotovich1572
    @ivankotovich1572 5 років тому +1

    Спасибо за эту серию видео по паттернам, единственное что хотел спросить - в начале было сказано что данные легковеса должны быть запротекчены от изменения, но при таком исполнении я имею прямой доступ к полю model и соответственно могу его изменить, и эти изменения коснутся всех остальных объектов созданных допустим с моделью 'tesla'. Это просто для облегчения понимания примера сделано ?

  • @kids-man
    @kids-man 5 років тому +5

    webDev в конструкторе AutoFactory параметр name лишний =)

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil 2 роки тому +1

    Это обычное кэширование, или нет?

  • @PZNV_Media
    @PZNV_Media 2 роки тому

    Есть подобный пример на Typescript ?

  • @MrBlackhard27
    @MrBlackhard27 5 років тому +1

    Отличное видео! Один вопрос: почему не указываете второе название, которое используется в русскоязычном пространстве, а именно "Приспособленец"?

    • @YauhenKavalchuk
      @YauhenKavalchuk  5 років тому +1

      Указывается, посмотрите название видео. Я написал, как "Легковес"

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 роки тому

      Странное название. Непонятно откуда оно взялось

  • @maxxxeeem
    @maxxxeeem 3 роки тому

    А в чем разница между паттернами мемо и легковес? А то я лично не заметил вообще разницы

    • @YauhenKavalchuk
      @YauhenKavalchuk  3 роки тому +2

      Memo - позволяет хранить предыдущее состояние объектов и при необходимости восстанавливать его. А легковес - создаёт объект, который будет хранить общие структуры данных для других объектов.

    • @TheBabbl978
      @TheBabbl978 Рік тому

      ​@@YauhenKavalchukИ где в видео общая структура данных ? В примере вы используете только строку в качестве модели данных. Главная идея паттерна Memo - мы можем делать снимок объекта, не получая доступ к закрытым его частям - это важный нюанс, который определяет реализацию паттерна.