Абстрактная фабрика. Паттерны проектирования - обмен простоты на гибкость?

Поділитися
Вставка
  • Опубліковано 2 лис 2023
  • Поговорим о паттернах вообще и о паттерне Абстрактная фабрика в частности!
    Мой курс «Хардкорная веб-разработка» - course.to.digital
    Книжный клуб:
    botanim.to.digital/
    botanim_to_digital_bot.t.me/
    Telegram - t.me/t0digital
    ВК - digitalize.team
    RuTube - rutube.ru/channel/24802975/ab...
    Дзен - dzen.ru/id/6235d32cb64df01e6e...

КОМЕНТАРІ • 207

  • @andreyduke_kz4882
    @andreyduke_kz4882 7 місяців тому +141

    Зеленый - чудный парень! Все время правильные вещи подсказывает. Как без него раньше то обходился? )

    • @t0digital
      @t0digital  7 місяців тому +11

      Тоже рад, что он присоединился!

  • @leonwew
    @leonwew Місяць тому +2

    На самом деле зеленый отличная задумка! Добавляет юморка в видео. Это отлично помогает сфокусироваться и не поймать скуку. Лично у меня проблема с этим. Если видео монотонное - то не важно на сколько оно информативное. Скорее всего я ничего не пойму и не запомню. Круто придумал!

  • @Nifacy55
    @Nifacy55 7 місяців тому +23

    Очень понравилась идея с "зелёным"! Идеи, описанные Алексеем в конце видео, просты, но их понимание становится очевидным только с опытом. Ощущение, как будто "зелёный" - все те вопросы и недопонимание, возникающие у новичков, погружающихся в тему паттернов. Как раз из-за них и возникает 2 "лагеря": зелёный и Алексей в первой части видео, который все свои решения аргументировал как "ну так красиво". И как раз в конце Алексей и говорит "истину" - оба лагеря не правы, так как важно соблюдать баланс.
    Побольше бы такого контента, думающего про зрителя и его возможных вопросах 😊❤

  • @BusinguZ
    @BusinguZ 7 місяців тому +57

    Очень круто! Можешь снять больше видео про паттерны проектирования?

  • @fantast2568
    @fantast2568 7 місяців тому +12

    Спасибо большое, приятно смотреть твои видео, от тебя заряжает позитивом и отношением к программированию как к искусству а не как к работе ❤❤❤

  • @heisenberg6874
    @heisenberg6874 7 місяців тому +2

    обожаю формат твоих видео - всё как нужно: сразу к делу, трудные концепции простым языком по полочкам, дружественная обстановка. всем рекомендую твой канал, все довольны. спасибо за контент!)

  • @rishat7620
    @rishat7620 7 місяців тому +5

    Классно раскидал, полиморфизм на месте!
    А Зелёный - вощщще огонь, епте)

  • @nehz_ttv
    @nehz_ttv 7 місяців тому +6

    Лучшее объяснение абстрактной фабрики!

  • @pylounge
    @pylounge 7 місяців тому +3

    Как похорошел зелёный из M&M’s при Алексее!

  • @user-eo2gz5yz7x
    @user-eo2gz5yz7x 7 місяців тому +3

    Очень полезно и интересно, спасибо Алексею и зеленому

  • @DrillingEnglish
    @DrillingEnglish 7 місяців тому

    Наконец то снова стали выходить видео! Уже соскучились! 🎉

  • @dino933103
    @dino933103 7 місяців тому +1

    Шикарно! Объединил программирование и формат скетча. Зеленый, говорящий про Dependency Injection и что все сложно - великолепно.

  • @dmitry.burnaev
    @dmitry.burnaev 7 місяців тому

    Спасибо большое! Крутое видео и шикарная подача материала 👍

  • @user-oi1zl6de8i
    @user-oi1zl6de8i 7 місяців тому

    Прекрасное объяснение. Автору спасибо!

  • @maksimmaxmotives4271
    @maksimmaxmotives4271 7 місяців тому +1

    Очень крутой формат и тема здоровская! Продолжайте в том же духе:)

  • @uicodeuz
    @uicodeuz 7 місяців тому +5

    Кайф, успехов вам ❤

  • @user-hp9ly9qx3p
    @user-hp9ly9qx3p 7 місяців тому

    Классная подача материала! Зеленый - просто изюминка))

  • @bukanaka
    @bukanaka 7 місяців тому

    Просто смотреть приятно и лампово, не говоря, уже о пользе).

  • @TieoZ
    @TieoZ 7 місяців тому +4

    Даёшь больше зелёного что бы он сам изначальный код писал, который потом ты рефакторишь, и зелёного можно ещё рептилоидом назвать, потому что они правят миром, причём глядя на средний код так точно)

  • @user-ci8yo4yr7s
    @user-ci8yo4yr7s 7 місяців тому

    Спасибо за материал. Очень полезно! Хотелось бы продолжение сериала Паттерны с серией на каждый 👍

  • @eduardtkachuk
    @eduardtkachuk 7 місяців тому

    Отличный пример, спасибо! 🙂

  • @herypankipythondeveloper3753
    @herypankipythondeveloper3753 7 місяців тому

    Здравствуйте, спасибо за видео! Очень жду ваш курс, когда планируете его выпускать? :)

  • @user-ly6jh3pc6z
    @user-ly6jh3pc6z 7 місяців тому +1

    Ура! Ты возвращайся

  • @user-wz5eq1sv7i
    @user-wz5eq1sv7i 7 місяців тому +4

    конфликт с зелёным выглядит кринжовенько, но только в моменты, когда это именно конфликт :))
    когда это просто "слишком умный" комментатор, прям идеально, прям нравица

  • @mailvoodoo
    @mailvoodoo 7 місяців тому

    Спасибо! С "Зеленым чуваком" вообще - огонь! Хотелось бы еще про паттерны. 👍

  • @user-qp7uv2ip7x
    @user-qp7uv2ip7x 7 місяців тому +3

    Спасибо, отличное видео, по отличной теме! Но окошки на холодосе - это конечно успех ))

  • @leomysky
    @leomysky 7 місяців тому

    Отличное видео, отличная работа

  • @Vorono4ka
    @Vorono4ka 7 місяців тому

    Растеееете! Качество видео классное, понравилось, что добавили зеленого. Вы читали какие-то книжки по монтажу, свету и сьемке? Можете посоветовать? 😅

  • @dasfering7683
    @dasfering7683 7 місяців тому

    Пожалуйста побольше про абстракции и паттерны

  • @clauseclause6640
    @clauseclause6640 7 місяців тому +4

    Пожелания и предложения - реализовывать вместо if elif через dict, так и быстрее работает (вместо n сравнений 1 соответствие по хэшу) и не меняется основной код (дикт в данном случае плагин). Ну и еще пачка if elif не заменяет else, а вот операционнка другая может оказаться и падение будет с невнятной ошибкой о переменной gui использованной до объявления... не хорошо

    • @t0digital
      @t0digital  7 місяців тому

      Касательно ошибки - это ж не продакшн код, а демо паттерна.

  • @artur8539
    @artur8539 7 місяців тому

    Видео нужны чаще!

  • @user-jf5hq7ve8c
    @user-jf5hq7ve8c 7 місяців тому

    Жду все остальные 20 паттернов от вас))

  • @user-qd9ur2vp7x
    @user-qd9ur2vp7x 7 місяців тому

    Очень интересно, спсибо!

  • @gaxeliy
    @gaxeliy 7 місяців тому

    Я все ждал, когда в конце окажется, что Зеленый - это настоящий автор канала, а Черный - абстрактный собирательный гротескный образ, который рассказывает как НЕ надо.

  • @yurydorozhko6094
    @yurydorozhko6094 7 місяців тому

    Отличная подача материала. Для меня, программирующего время от времени, все выглядит предельно ясно и понятно, даже мотивирует руководствоваться именно таким принципом программирования. Продолжай, пожалуйста, в таком же стиле с другом критиком.

  • @KA3AHOBA94
    @KA3AHOBA94 7 місяців тому +2

    ооооо наконец то. Как раз можно сделать GUI для примеров паттерна.

    • @andrewbondaryuk
      @andrewbondaryuk 7 місяців тому

      GUI остаётся САМЫМ лучшим применением ООП. Во многих остальных случаях его применение имеет массу нюансов 😀

  • @umni_kot
    @umni_kot 7 місяців тому

    отличное видео, спасибо!

  • @silseleum
    @silseleum 7 місяців тому

    Круть! Только вчера незаметно для себя изобрел этот паттерн, а сегодня вот узнал что его уже изобрели(

  • @dmitriyneledva4693
    @dmitriyneledva4693 7 місяців тому +2

    Лучший канал на этом сайте :)

  • @BadShowChannel
    @BadShowChannel 7 місяців тому +3

    можно видео только с зеленым минут на 12?

  • @IT-ij6le
    @IT-ij6le Місяць тому

    снимай больше про паттерны)

  • @arnowt
    @arnowt 7 місяців тому +3

    Мне больше нравиться, вариант когда есть один класс обертка, а конкретная реализация вызывается в его конструкторе.
    Но в любом случае ООП хорошо в меру, сколько раз(правда на пхп) приходилось править код и без удаленного дебага не возможно понять какой кусок кода исполняется, а потом ищи все остальные варианты и правь там(автор всей этой красоты давно уволился и после него ещё человек 5 занимались поддержкой, каждый со своим пониманием красоты), причём некоторые варианты не более чем фантомные(никогда не работают). А потом выгребай ошибки, неделями. В итоге по опыту иф-элс правится, в разы быстрее, надёжнее и главное под силу даже начинающему мидлу.

  • @pyquent
    @pyquent 6 місяців тому

    Можешь на досуге записать ролик про основы Git? Искал, но ничего конкретного на эту тему не нашел.

  • @comparison9436
    @comparison9436 Місяць тому

    у меня вопрос. Если добавилась новая реализация RefrigeratorGui, но у него в методах добавлены или еще хуже изменены входящие аргументы, то что делать тогда? Допустим в метод create_window() добавляется новая переменная background (просто для примера). То что тогда делать? Помогите пожалуйста!

  • @ali_qarasuv
    @ali_qarasuv 7 місяців тому

    Формат видео очень крутой)

  • @pavel_shech
    @pavel_shech 7 місяців тому +2

    Лайк авансом!)

  • @Cyber-X
    @Cyber-X 7 місяців тому +1

    Лайк однозначно за зеленого)))

  • @anton_medvedev_it_life
    @anton_medvedev_it_life 6 місяців тому

    Паттерны это круто! У меня часто, когда узнаю что-то новое, потом хочется его запихнуть куда-нибудь. В конечном счете понял, что это опасное желание. Порой лучше просто знать, что есть паттерны и какие они, чтобы применить вовремя. Таким запихиванием, лишь бы применить я много раз себе жизнь усложнил в простейших проектах :-D
    Благодарю за видео

  • @kaz_breaker
    @kaz_breaker 4 місяці тому

    Зелёному из конца видео хочется ответить: простое лучше, чем сложное, хотя сложное лучше, чем запутанное

  • @user-zb8cc2wy1x
    @user-zb8cc2wy1x 7 місяців тому

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

  • @midlifecode
    @midlifecode 7 місяців тому

    Спасибо! Я смотрел, Вы пишете в VIM. Будет здорово если расскажете, как с ним работать (у меня мозг плавится от него, хотя понимаю, что если научиться - то это ускорит работу. Очень интересно как туда вставить линтер, подсветку синтаксиса и прочее.

    • @hakooplayplay3212
      @hakooplayplay3212 7 місяців тому

      Primegen отличные уроки выпустил, поглядите 😊 меня вдохновил перейти пол года назад

  • @valk9819
    @valk9819 7 місяців тому

    Это просто чудесно, чудесно, мда. Нужно больше видео из серии и чтобы зеленый не ворчал)

  • @Huginn2008
    @Huginn2008 7 місяців тому

    Огонь видео! Полезно, познавательно и с юмором!
    Зелёный к Халку отсылка или к Зелёному из мультфильма "Тайны третьей планеты"?

    • @user-xc4kd9fl9n
      @user-xc4kd9fl9n 7 місяців тому

      Зелёный - отсылка к неопытности)

  • @Paradise_Box
    @Paradise_Box 7 місяців тому +4

    Депенданси инжекшан, ёпта! :)))

    • @Nabokka
      @Nabokka 7 місяців тому +3

      Как программист сглаголил!

  • @1966Radislav
    @1966Radislav 6 місяців тому

    Глянул ваш проект Ботаним) было бы классно если бы книги были на английском но с пояснениями специфических терминов, не как обычно в конце книги, когда нужно каждый раз нырять и искать точный перевод, а по ходу чтения, это конечно огромный труд но я бы с удовольствием купил такую даже в ПДФке так как перевод компьютерной литературы в наших изданиях оставляет желать лучшего если мягко сказать)

  • @sikelmon
    @sikelmon 7 місяців тому +1

    Привет.
    Тема для видео. Интересует распараллеливание на питоне для системы диф уров. Вот бы видосик. )))

    • @user-vg4lp5ox7f
      @user-vg4lp5ox7f 7 місяців тому

      Поддерживаю, сейчас проектную работу надо делать …. 😅 а на плюсах геморрой будет

  • @yaroslavbox1249
    @yaroslavbox1249 7 місяців тому

    Hello nice video!!. Can you tell me, please, this 'from typing import Protocol' statement, allows us to do type casting in Python, like TypeScript in JS?

    • @t0digital
      @t0digital  7 місяців тому

      Протоколы это неявные интерфейсы. Класс, который реализует этот интерфейс, никак с ним не связан на уровне кода, её наследует его и тп. Это не type casting.

  • @ashotvantsyan9028
    @ashotvantsyan9028 7 місяців тому +1

    Я бы вместо if/elif создавал бы mapping os name->callable, и получается single responsibility, либо можно naming convention сделать, и mapping не понадобится, про Darwin OS - DarwinWindow, Darwin...

  • @Vasilii_Furi
    @Vasilii_Furi 7 місяців тому +2

    Лучший!

  • @user-xd3px1hf6h
    @user-xd3px1hf6h 7 місяців тому

    Ура, вернулся нормальный голос)

  • @matiiv25
    @matiiv25 7 місяців тому

    Формат с альтер-его огонь!

  • @captainkryuk1899
    @captainkryuk1899 7 місяців тому +2

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

  • @widgeton
    @widgeton 7 місяців тому

    Очень полезный видос! Спасибо огромное! В Чистом коде Дядишки Боба есть глава Объекты и структуры данных примерно о том же. В вашем примере возникнет сложность если необходимо будет создать другие методы. Их нужно будет дописывать в абстракции и всех других классах. Дядюшка Боб упоминает мельком паттерны Посетитель и Двойная диспетчеризация. Они имеют свои издержки, но тоже полезны иногда бывают. Это намек на видос про них если че))) Зеленый жжет)

  • @krasoffski
    @krasoffski 7 місяців тому +2

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

  • @MrSunchezz
    @MrSunchezz 7 місяців тому

    Спасибо!
    А почему про Go, а не Rust?
    Считаю, что было бы крайне познавательно погрузиться в его концепции с вашей помощью.

    • @t0digital
      @t0digital  7 місяців тому +1

      Выбрали Го в голосовании. В Ботаним участники голосуют за следующую книгу. Я на это мало влияю сейчас:)

  • @khanbekov.b
    @khanbekov.b 6 місяців тому

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

    • @t0digital
      @t0digital  6 місяців тому

      Интересная мысль, спасибо

  • @Den-np7tv
    @Den-np7tv 7 місяців тому

    А почему, например, windowsGUI не наследуется от класса GUI? Так и не понял

    • @hakooplayplay3212
      @hakooplayplay3212 7 місяців тому

      Наследование лучше избегать. Обычно от него больше проблем чем пользы.

  • @youtubeyoutube6205
    @youtubeyoutube6205 7 місяців тому

    Зеленый классный чувак, без него видео не было бы таким классным

  • @uplineshop4587
    @uplineshop4587 7 місяців тому

    привет , помоги сделать тунель wireguard на впн сервер .буду благодарен $ !

  • @dnk363
    @dnk363 2 місяці тому

    Интересное и хорошее объяснение абстрактной фабрики. Но интересно, в конкретном примере мог бы подойти паттерн "строитель"? Может есть какое-то преимущество у абстрактной фабрики перед строителем в этом примере?

    • @comparison9436
      @comparison9436 Місяць тому

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

  • @irinasurma4675
    @irinasurma4675 6 днів тому

    Биполярочка наше все 🥲

  • @magnumopus1002
    @magnumopus1002 7 місяців тому

    Очень хотим видео по Helix 🧬 как альтернативу neovim

  • @user-mo9op9xh6f
    @user-mo9op9xh6f 7 місяців тому

    Алексей Николаевич, я ничего не пропустил? Вы раньше говорили, что набор в группу изучающих Пайтон начнётся к первому июля. Ежедневно захожу в Ваш Телеграмм. О наборе объявлений не было😢.

    • @t0digital
      @t0digital  7 місяців тому

      Курс еще не стартанул, если вы об этом. Я Алексей Анатольевич, если что:)

    • @user-mo9op9xh6f
      @user-mo9op9xh6f 7 місяців тому

      @@t0digital Извините, буду знать. Нашел в гугеле. Я именно об этом. Спасибо за ответ.

  • @sergeyfedor45
    @sergeyfedor45 7 місяців тому

    про Go будет для всех или только в Ботаним?

    • @t0digital
      @t0digital  7 місяців тому

      Движуха по книжкам в Ботаним, но вероятно какие-то материалы по go будут и на канале

  • @viooi2582
    @viooi2582 7 місяців тому

    Кстати, что ты думаешь про новый язык Mojo, он полностью (создатели это обещают) поддерживает совместимость с библиотеками python, добавляет строгую типизацию и решает проблему со скоростью работы (обещают что в 35000 раз будет быстрее)?🙃

    • @viooi2582
      @viooi2582 7 місяців тому

      А ну и конечно многопоточность)

  • @user-bd9bf5kw3l
    @user-bd9bf5kw3l 7 місяців тому

    Почему вы использовали Protocol, а не ABC?
    Мне нравится наследование от абстрактных классов т.к. позволяет легко отслеживать количество реализаций, ещё это удобно т.к. легко и просто можно ознакомится с системой по автоматически стоящейся uml диаграмой связей объектов.
    Где же всё таки нужен протокол я до конца не понял, как по мне его удобно использовать только в том случае если необходима только часть методов какого-то абстрактоного класса, и чтобы не было не нужных зависимостей его использовать.

  • @mslq
    @mslq 7 місяців тому

    Офигеть как сложно, придётся ещё пару раз посмотреть и в клуб вступить и книжек почитать.... )))

  • @user-ts2wy7he4p
    @user-ts2wy7he4p 7 місяців тому

    Зеленого надо тоже на чтения притащить, пусть учится :))) спасибо за видео!

  • @user-us7eb8bi9l
    @user-us7eb8bi9l 7 місяців тому

    Чёрный дело говорит.

  • @jamuelsexon
    @jamuelsexon 7 місяців тому

    А как понимать, что реализации гуи относятся именно к абстракции GUI? А если таких похожих абстракций несколько?

    • @t0digital
      @t0digital  7 місяців тому

      Анализатор типов проверяет это

    • @jamuelsexon
      @jamuelsexon 7 місяців тому

      @@t0digital Анализатор-то, умный. А мне как понять, какая реализация от какого протокола зависит? Это разве не ломает дзен питоновский?

    • @t0digital
      @t0digital  7 місяців тому

      ​@@jamuelsexonне понял вопрос

  • @maksimkuznetsov2132
    @maksimkuznetsov2132 7 місяців тому

    О, а я знал чувствовал потребность OCP, и применял.
    Но не знал, что есть такой принцип, который преподают программистам.

    • @t0digital
      @t0digital  7 місяців тому +1

      Да, это один из принципов SOLID, описанных Робертом Мартином

  • @myhomework2431
    @myhomework2431 7 місяців тому

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

  • @plkvp
    @plkvp 7 місяців тому

    А где на канал Зелёного подписаться?

  • @zakirovio
    @zakirovio 7 місяців тому

    где хранить интерфейсы? есть хорошая практика?

    • @t0digital
      @t0digital  7 місяців тому +1

      В месте использования. А реализацию во внешнем слое. Почитайте Чистую Архитектуру Мартина, там есть об этом

    • @zakirovio
      @zakirovio 7 місяців тому

      👌@@t0digital

  • @alexseydugin8109
    @alexseydugin8109 7 місяців тому +1

    Меня часто спрашиваю кто такой Тайлер Зеленый

  • @wemakoz
    @wemakoz 7 місяців тому

    я так понимаю, Зеленый это результат биполярного расстройства ?
    (дон хейт ми, джаст джокин)

  • @Ssilki_V_Profile
    @Ssilki_V_Profile 7 місяців тому

    if elif elif else зависящие от литералов можно заменить на дикт, в котором литералы - ключи, а значения - исполняемые функции.

  • @user-st8yr6wy9y
    @user-st8yr6wy9y 7 місяців тому

    Super

  • @mtigames188
    @mtigames188 5 місяців тому

    Да кто это такой, ваш Dependency Injections?! Можно про него видос?)

  • @silseleum
    @silseleum 7 місяців тому

    С зеленым прикольно, но главное не переборщить. ИМХО, такие штуки быстро надоедают

  • @abtokarev
    @abtokarev 7 місяців тому

    Зеленый классный! Голосую за персональный спиноф с вредными советами от Зеленого.

  • @s_ivanov179
    @s_ivanov179 7 місяців тому

    Состояние моей души - зелёный 😅😂

  • @apostol_fet
    @apostol_fet 6 місяців тому

    Где можно разменять один монолит на 1 млн строк кода, на 100 микросервисов по 10 000 строк кода? (Как разменять if else на абстрактную фабрику я понял, спасибо автору)

  • @skycheron
    @skycheron 7 місяців тому +1

    Даешь golang!

  • @self_lionized
    @self_lionized 7 місяців тому

    Го про другие популярные паттерны

  • @Chumachech
    @Chumachech 7 місяців тому

    А почему у тебя имена классов и аргументы в UpperCamelCase стиле а имена функций under_score стиле?

    • @lagrange9343
      @lagrange9343 7 місяців тому

      Имена именованных аргументов у него вообще-то тоже в snake_case

    • @Chumachech
      @Chumachech 7 місяців тому

      @@lagrange9343 Я наверное ошибся в терминах, но суть ясна

    • @t0digital
      @t0digital  7 місяців тому

      Имена классов в CamelCase должны быть. Имена переменных, в том числе аргументов в snake_case. PEP8

  • @konstantinermoshin6047
    @konstantinermoshin6047 7 місяців тому

    Одиночество в сети=)

  • @h3ckphy246
    @h3ckphy246 7 місяців тому

    Го еще

  • @StanislavBeskaev
    @StanislavBeskaev 7 місяців тому

    Даёшь зелёного в каждый выпуск

  • @user-ir4vd5yk4x
    @user-ir4vd5yk4x 7 місяців тому

    а когда ждать второй ютуб канал от Зеленого?

    • @t0digital
      @t0digital  7 місяців тому

      Да сюда еле уговорил его прийти!