Паттерн Factory Method, Фабричный метод, С#, Unity

Поделиться
HTML-код
  • Опубликовано: 4 янв 2025

Комментарии • 48

  • @it_is_muchomor
    @it_is_muchomor Год назад +20

    Спасибо. Редко встречаются люди, которые сперва объясняют - ЗАЧЕМ, а уже потом - КАК. Отдельное спасибо за "где применяется")

  • @kirillnotof4861
    @kirillnotof4861 10 месяцев назад +3

    Долго не мог понять сути данного паттерна и у вас получилось! Благодарю вас! Голова забурлила от идей, в плане где его можно применить.

  • @АлтынбекАнарбеков-й4ф
    @АлтынбекАнарбеков-й4ф 10 месяцев назад +2

    "Ямете кудасай" вообще неожиданно было ) И узнал то, что хотел и поржал отдуши, спасибо!

  • @MrG12g
    @MrG12g Год назад +1

    Отличное видео! Редко оставляю комментарии, но на этом этапе развития канала решил поддержать автора таких хороших видео

  • @play-pot
    @play-pot Месяц назад

    Супер, доступно даже для такого пенька как я. Спасибо!

  • @darr11
    @darr11 16 дней назад

    Спасибо большое, очень понятно

  • @НатальяСтаселько-и1б

    Спасибо! Как всегда быстро, чётко, понятно, с юмором и без лишней инфы. Для таких торопыг, как я, - самое то) классный канал! Спасибо автору!!!

  • @Djegur
    @Djegur Год назад

    Спасибо большое, очень хорошие и наглядные примеры. Блягодарен вам очень сильно. Качество звука видео и монтажа лучше чем у платных курсов, добрый юмор тоже весьма уместен)

  • @jackmusic631
    @jackmusic631 Год назад

    огромное спасибо за труд!! объяснение с различными примерами, встречающимися проблемами и визуализацией
    лайк подписка

  • @MarselNz
    @MarselNz Год назад +1

    Очень крутое объяснение, спасибо за ваш труд

  • @VyacheslavTamplier
    @VyacheslavTamplier Год назад +1

    Сергей, у тебя лучшие уроки по SOLID и паттернам в контексте геймдева и в частности Unity. Продолжай, пожалуйста! Хороших и грамотных роликов по этой тематике в ру (да, и не только) сегменте очень мало, все смотрят видосы в духе "сделал игру за час" с пустым контентом, а подобных видеороликов, где кратко, четко, понятно и по теме, очень не хватает. Спасибо!

  • @Тест_ТВ
    @Тест_ТВ 4 месяца назад

    Спасибо! Продолжай! Очень доходчиво и интересно (Пишу на Java)

  • @rightmelancholy1170
    @rightmelancholy1170 7 месяцев назад

    Очень здорово, приятно было посмотреть.

  • @andreybulatov7097
    @andreybulatov7097 Год назад

    Очень полезный тутор спасибо!)

  • @nrouslan
    @nrouslan 8 месяцев назад

    Ответили на все вопросы! Спасибо большое!!

  • @ДаниилПономарев-щ1ш

    Супер просто и понятно🎉

  • @АртемЗайцев-к9щ
    @АртемЗайцев-к9щ Год назад

    Очень хорошее видео, много понял, большое спасибо

  • @PinkPanteRus
    @PinkPanteRus Год назад

    Спасибо! Понятно рассказал.

  • @Mepp3ku
    @Mepp3ku 9 месяцев назад +1

    Так детально показывает и рассказывает автор, буквально пережевывая все моменты, а я все равно нифига не понял))

    • @sergeykazantsev1655
      @sergeykazantsev1655  9 месяцев назад

      А что именно непонятно? :D

    • @derikfant831
      @derikfant831 9 месяцев назад

      Жиза, каждый шаг по отдельности понятен, но картина в общем в голове не укладывается. Но думаю это дело практики) надо пересматривать и повторять до тех пор, пока не сложится

  • @ivan-jc1bp
    @ivan-jc1bp Год назад

    Огромной спасибо!

  • @vladimirkraft4315
    @vladimirkraft4315 Год назад

    Спасибо большое!

  • @andreyromanov680
    @andreyromanov680 Год назад

    Лучший

  • @ravenempty3562
    @ravenempty3562 9 месяцев назад

    Подскажите, что такое "public abstract Mage FactoryMethod();" на 8:30 ? Почему в объявлении метода фигурирует класс Mage? что-то я запутался совсем.

    • @ravenempty3562
      @ravenempty3562 9 месяцев назад

      ааа, всё, допёр, он должен ВЕРНУТЬ объект класса Mage. Фух, чуть голова не закипела, ну его, это ваше программирование!

    • @sergeykazantsev1655
      @sergeykazantsev1655  9 месяцев назад +2

      Ну вот, я даже не успел ничего сказать:D

    • @fuuuns
      @fuuuns 4 месяца назад

      В правильно поставленном вопросе кроется 70% ответа! Эффект уточки.

  • @takeTheRedPill189
    @takeTheRedPill189 11 месяцев назад

    Слушай ты просто мог сделать класс Сreator и там требовать мага и всё поскольку ледяной маг и огненый маг являются магами как ты и сказал 8:12 они оба подойдут, ты много продублировал код 6:34

    • @sergeykazantsev1655
      @sergeykazantsev1655  11 месяцев назад

      А создавать их кто будет, если creator их требует?

  • @Oscar-ll6mt
    @Oscar-ll6mt 9 месяцев назад

    У меня вопрос, вот согласно DRY мы не должны дублировать код, но в классах IceCreator и FireCreator логика создания одинаковая, не правильнее было бы ее абстрагировать?

    • @sergeykazantsev1655
      @sergeykazantsev1655  9 месяцев назад +1

      Если вы про первые 3 строчки на 8:37, да, ResourcesLoad + Instantiate можно абстрагировать, а вот Init не удастся и с AddComponent тоже повозиться придётся.

    • @Oscar-ll6mt
      @Oscar-ll6mt 9 месяцев назад

      Спасибо за ответ, ваши уроки они мне очень помогли, хотел бы в вашем исполнении послушать про ESC, если вам его использовать?

    • @sergeykazantsev1655
      @sergeykazantsev1655  9 месяцев назад +1

      Я пока не чувствую себя достаточно компетентным, буквально неделю назад начал писать проект на DOTS ECS и чувствую себя очень зелёным в этой области) Теоретические знания у меня есть, но нужно больше практики

  • @zheka9877
    @zheka9877 6 месяцев назад

    Если честно, так и не понял для чего этот паттерн нужен.
    На мой дилетантский, ещё даже не стажерский, взгляд, все паттерны решают проблему распухания кода путем всяческих обобщений объектов, чтобы потом через общее (абстрактное) можно было обратится к частному, а также, чтобы написанный класс поместить в черный ящик и больше к нему не прикасаться.
    Здесь же, мы не обобщили ничего: как и раньше существует 2 копии кода, которые уменьшились на 2 строчки, при этом создали 3 отдельных класса и в сумме добавили около 20-30 строк кода. А ведь при добавлении объектов для создания, классы как распухали, так и будут распухать, и ни в какой черный ящик мы эти классы не поместили.
    Так ещё плюс к этому, в данном случае, вместо того, чтобы довольно лаконично в одном месте оставить логику кнопки из 5 строк кода, мы взяли и раскидали эту логику по всему проекту. Теперь, если при нажатии на кнопку, что-то пойдет не так, мы не полезем в код кнопки, а будем шарить по всему проекту и искать, в каком же микроклассе воспроизводится баг

    • @sergeykazantsev1655
      @sergeykazantsev1655  6 месяцев назад

      Претензия отчасти мне понятна и я даже с ней отчасти согласен.
      Хочу сказать что всё-таки некое обобщение есть, фабричный метод так же абстрагирует логику создания.
      Я понимаю претензию по бОльшее количество строк кода, но при росте масштаба проекта куда хуже иметь свитч кейс в 400 строк чем иметь 10 классов в 40 строк. Тут работает принцип SRP, в случае если какая-то сущность неправильно создается, вместо огрромного свитч кейса мы лезем в маленький аккуратный тот самый микрокласс с реализованным внутри фабричным методом.

  • @Serge86210
    @Serge86210 9 месяцев назад

    Пример из жизни? Я думал, он про программирование расскажет, а не про фэнтези и мечи.

    • @sergeykazantsev1655
      @sergeykazantsev1655  9 месяцев назад

      Так ты посмотри видео дальше, и про программирование тебе все будет

    • @Serge86210
      @Serge86210 9 месяцев назад

      @@sergeykazantsev1655 да нет, по сути все круто. Просто напомнило про Донни из Большого Лебовски, который произносит ключевые фразы раньше, чем требуется по сценарию)

    • @sergeykazantsev1655
      @sergeykazantsev1655  9 месяцев назад

      Можешь считать это моим видением. Сперва я рассказываю определение, потом пример из жизни, потом структура, потом код) А фэнтези, мечи и всю эту тему я очень люблю, сам хемой занимаюсь, вот что первое на ум приходит то в и материал залетает)

    • @Serge86210
      @Serge86210 9 месяцев назад

      @@sergeykazantsev1655 ясно, про абстрактную фабрику видео тоже понравилось)

  • @fuuuns
    @fuuuns 4 месяца назад

    Я так понял это банальный ивент рассылки. И это получается ведь фабрика и билдер это по сути декораторы? Или нет? Есть родительский класс ивент. Единый общий Текст, картинка, хтмл, документ, что угодно. От него наследуются фабрикой рассыльщики. Получают данные и каждый начинает слать в свой канал, почта, телеграмм, смс, файрбейз, дебаг логи в клику в кибану. У кажого свои особености там целые династии этих оберток, компоновка данных, подготовка соединения и конект к бд, получение обработка ответов, сверху еще сбор ошибок или поломаных отправок на перезапуск, дальше в слой который поставит недоставленную таску в очередь на новый перезапуск. И так по осп можно абстракцию ивента до бесконечности можно оборачивать в количестве * (количество средств рассылки данных)

    • @fuuuns
      @fuuuns 4 месяца назад

      Вот она, сила ООП в своей красе...

    • @fuuuns
      @fuuuns 4 месяца назад

      Ну и получается что мы берём результат фабрики - ивент. И с помощью билдера строим поэтапно оборачивая его в декораторы до момента пока не будет готова отправить постзапрос с сообщением в канал. И сверху слои хендлеров ответов что нам сказал рассыльщик, обработки ошибок, иретрай упавших. Слоёный пирог, или лук, не знаю с чем ассоциировать. Как по мне пирог приятнее для запоминания.

    • @sergeykazantsev1655
      @sergeykazantsev1655  4 месяца назад +1

      Рассылка это про взаимодействие между классами. Здесь же(и в абстрактной фабрике) речь про то где порождать и как порождать объекты

    • @fuuuns
      @fuuuns 4 месяца назад

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