Паттерн Fluent Interface. Как использовать в Unity?

Sdílet
Vložit
  • čas přidán 28. 08. 2024

Komentáře • 42

  • @myownchannellol
    @myownchannellol Před rokem +13

    Минута занудства: Fluent Interface - чисто "рюшечный" инструмент, дающий возможность "красиво" сетапить объект. SetBaseDamage получился декорирующим методом, который добавляет этап валидации перед присваиванием и обрабатывает доп параметры (в лице конфига), т.е. реализует доп логику. Это демонстрация использования Method Chaining, но не Fluent Interface, который решает не эти проблемы. Это сродни разговорам о том, что Di-контейнеры нужны для реализации синглтонов.

  • @salaniviswan482
    @salaniviswan482 Před rokem +2

    Чекаю ще відео

  • @Daniel48476
    @Daniel48476 Před rokem +6

    Интересно! Благодарю!

  • @MinerProfessional
    @MinerProfessional Před rokem +4

    Безумно жаль, что охваты такие маленькие, хотя не сказал бы что контент прям узкоспециализированный. Огромное тебе спасибо за такую кладезь знаний! Думаю с информацией, которую ты уже предоставил на канале, можно спокойно в джуны+ идти. Желаю скорейшего роста аудитории и притока неугасающей мотивации!

    • @gamedevlavka
      @gamedevlavka  Před rokem +1

      Спасибо)
      Все ещё впереди)

  • @sofarsky4107
    @sofarsky4107 Před rokem +2

    Дуже цікаво!

  • @zloybivshiy7236
    @zloybivshiy7236 Před 11 měsíci +1

    Спс за видос

  • @arnaudesalmons886
    @arnaudesalmons886 Před rokem +1

    Дякую за контент!

  • @omegakrakengames
    @omegakrakengames Před rokem +1

    Спасибо за новое видео

  • @aleksey8405
    @aleksey8405 Před rokem

    Было бы классно, если бы в начале каждого видео автор говорил - какую конкретно задачу мы сейчас решим, используя данный функционал. Так было бы гораздо полезнее!
    И в целом, в любом деле - всегда сначала определяется задача, а потом для её решения подбираются инструменты. И любой хороший туториал всегда начинается с описания задачи или проблемы. А затем - нам показывается решение, в частности - в виде какого-то паттерна проектирования. Потому что сейчас - я смотрю видео, всё вроде бы понятно, логично, но я не понимаю, как мне это может пригодиться. И я уже начинаю придумывать задачу, которую этот паттерн мог бы решить. А в это в корне неверные подход к проектированию.
    Но в любом случае, спасибо за контент!

  • @MaximKarabaev
    @MaximKarabaev Před rokem +2

    В контексте, в котором автор предлагает использовать Fluent Builder, не стоит его использовать. Надежнее инициализировать все свойства через конструктор и сделать их get only, или через инициализатор и сделать свойства init only

    • @gamedevlavka
      @gamedevlavka  Před rokem

      Согласен, наверное, стоило упомянуть это явно.
      Это всего лишь пример, не стоит придираться к кейсу, я ведь показываю принцип

  • @finimensniper3322
    @finimensniper3322 Před rokem +2

    Этот паттерн очень похож на Builder по синтаксису хоть они и для разных задач

    • @gamedevlavka
      @gamedevlavka  Před rokem +2

      И немного по-разному работают

  • @005Racot500
    @005Racot500 Před rokem +1

    Юнити тут только для галочки. Можно просто в консоль апликешн делать и ничего не поменяется. Приплел и все. Еще хорошо бы упомнуть DOTween. Он весь на цепочках.

  • @salaniviswan482
    @salaniviswan482 Před rokem

    Ви зараз у Джорджії?

  • @FVA322
    @FVA322 Před rokem +2

    Не понял.. .в итоге пересмотрел два раза и все равно не понял) нужно прост сделать в static классе метод public static ToDo (this object , var enithing); и оно как-то там подтянится куда нужно?

    • @gamedevlavka
      @gamedevlavka  Před rokem

      Для того, чтобы понять, как работает Extensions, посмотри отдельное видео на канале, ссылка в описании. Тебе не понятна именно работа расширений

    • @user-qb8lx2uq5j
      @user-qb8lx2uq5j Před rokem +2

      Это конструкция языка C#, способ добавлять методы к уже существующим классам, даже чужим, к которым у тебя нет, например, доступа. Ты как бы "оборачиваешь" сторонний класс расширением, расширяющим методом и можешь потом обращаться к нему как к родному методу класса через "."

    • @FVA322
      @FVA322 Před rokem +1

      @@gamedevlavka Спасибо! Проучился в техникуме 4 кода, потом на бакалавра 4 года, потом курсы джуна на юнити и теперь смотрю у челиков на ютубыче как екстенгалс делать... Присвятые ГОФ спасибо, что ты есть....

  • @dmytromahas9207
    @dmytromahas9207 Před rokem +2

    Свойство урона не должно быть в классе оружия ?
    По мне так оно должно отвечать за урон, перезарядку и тд.

    • @gamedevlavka
      @gamedevlavka  Před rokem +1

      Это вообще не важно в данном видео, это во-первых. А во-вторых, свойство урона может определять класс юнита, может оружие, может набор абилок, а может все подряд. Отталкивайся от требований и делай, как тебе удобно, это лишь пример паттерна

  • @hero_9725
    @hero_9725 Před rokem +1

    Автор розкажи про інші патерни.

  • @netyloft3277
    @netyloft3277 Před rokem +4

    А в чем отличие от Builder?

    • @gamedevlavka
      @gamedevlavka  Před rokem +1

      Расскажу в следующем видео

    • @myownchannellol
      @myownchannellol Před rokem +1

      Builder - порождающий паттерн, который служит для создания объектов. Там конфигурируются параметры будущего объекта, который билдер породит. Здесь же происходит прямое взаимодействие с уже существующим объектом.

  • @evgenyevgexa5500
    @evgenyevgexa5500 Před rokem

    Не первый раз вижу подобный подход в туториалах, цепочки, билдеры и т.п. Но на практике суть данного подхода теряется в ScriptableObject'ах и префабах. Всё можно сделать конфигурируемым и структуру юнитов, оружия уже в редакторе задаст геймдиз через компоненты, скриптаблы и т.п. Из-за того что разные аспекты берут на себя разные компоненты, получается необходимость где то сбилдить в коде структуру юнита/пушки отпадает. Мб просто тут выбран не лучший пример для такого подхода. Но это чисто моё мнение)

    • @myownchannellol
      @myownchannellol Před rokem +1

      Издержки примера. Ранее уже упоминали DOTween и LINQ - хорошие примеры использования, где без Fluent-дизайна всё было бы менее лаконично.

  • @arnaudesalmons886
    @arnaudesalmons886 Před rokem

    Як тобі живеться у грузії?

  • @sarge14
    @sarge14 Před rokem +2

    так не проще?
    public struct Health
    {
    [SerializeField] private float cur;
    [SerializeField] private float max;
    [SerializeField] public bool IsDead => Cur cur; set => cur = math.clamp(value, 0f, max); }
    public float Max { get => max; set => max = math.clamp(value, 0f, 99999f); }
    }
    var health = new Health { Cur = _healthMax, Max = _healthMax });

    • @gamedevlavka
      @gamedevlavka  Před rokem +1

      В этом случае модель знает пограничные значения. Если это ок по требованиям, то никто не запрещает использовать сеттеры, пользуйтесь на здоровье)

  • @hero_9725
    @hero_9725 Před rokem

    Чому ти поїхав у грузію?

  • @MK-fs4bq
    @MK-fs4bq Před rokem +1

    Андрій Євгенович, вам в університеті неякісну освіту дали. Не вводьте в оману підписників своїм невіглаством. Припиняй видаляти коментарі і банити. 😏

    • @gamedevlavka
      @gamedevlavka  Před rokem +1

      Не конструктивно и скучно

  • @hero_9725
    @hero_9725 Před rokem +1

    Чекаю ще відео

  • @hero_9725
    @hero_9725 Před rokem +2

    Дякую за контент!

  • @user-ip5kb1fe4q
    @user-ip5kb1fe4q Před rokem +1

    Дуже цікаво!

  • @sofarsky4107
    @sofarsky4107 Před rokem

    Ви зараз у Джорджії?

  • @arnaudesalmons886
    @arnaudesalmons886 Před rokem

    Як тобі живеться у грузії?

  • @catssaga7208
    @catssaga7208 Před rokem

    Чому ти поїхав у грузію?

    • @gamedevlavka
      @gamedevlavka  Před rokem

      Мне не нравилось, куда страна идет в политическом плане. Я уехал в 2021 году

  • @user-ip5kb1fe4q
    @user-ip5kb1fe4q Před rokem

    Автор розкажи про інші патерни.