Factory Method pattern

Factory Method pattern

ExtremeCode

6 лет назад

210,104 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

@ExtremeCode
@ExtremeCode - 10.09.2017 14:59

Сори за очепятки и оговорки. Монтажил в 4 утра :D

Ответить
@qwertysdf34523
@qwertysdf34523 - 14.09.2023 12:32

это не фабричный метод) он проще)

Ответить
@mihaylo47
@mihaylo47 - 13.07.2023 06:35

зашумил восприятие матом и мемасиками, ничего не объяснил

Ответить
@ImgryNumber
@ImgryNumber - 03.04.2023 22:19

Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?

Ответить
@user-bs9kr3cu9n
@user-bs9kr3cu9n - 22.09.2022 16:43

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

Ответить
@kol4an721
@kol4an721 - 15.07.2022 11:56

Это когда чоткий пацан решил инициализироватт интерфейс, но его название не пропустила IDE

Ответить
@KENISEG
@KENISEG - 13.06.2022 14:18

на самом деле я плохо понял
надо больше разжевать момент как плохой код зарефакторить в хороший используя паттерн
больше блок схем

Ответить
@CynepnaxaTube
@CynepnaxaTube - 18.05.2022 05:35

Давай еще про паттерны и быдло!

Ответить
@CynepnaxaTube
@CynepnaxaTube - 17.05.2022 14:11

Давай еще, буду смотреть все. И поржал и понял.

Ответить
@surfspot8043
@surfspot8043 - 12.05.2022 08:23

Супер!

Ответить
@Roman-ej3xg
@Roman-ej3xg - 25.04.2022 12:54

АВтор конь рассказал по Абстрактную фабрику а не про Фабричный метод.

Ответить
@quyb6
@quyb6 - 19.04.2022 07:03

FactoryMethodLesson/CoolGood/Factory/Program.cs 34 строка комент с ошибкой( не благодари)

Ответить
@TheLoNord
@TheLoNord - 04.04.2022 13:27

В целом довольно не плохо интерпретировал, но вот за "var" в Cool Example я б спросил)))

Ответить
@crazist3325
@crazist3325 - 20.11.2021 01:11

А я юзаю сошник и мне поебать

Ответить
@ClosiusBeg
@ClosiusBeg - 02.11.2021 01:11

эммм обычный логический подход епта

Ответить
@user-qc7rh7od3t
@user-qc7rh7od3t - 12.10.2021 10:57

Автор: говорит "вобщем и целом". Щербаков: бляяяяяяяяяяяя

Ответить
@mr.lubynets
@mr.lubynets - 09.10.2021 11:13

топ топ топ топ топ топ

Ответить
@YaDebagger
@YaDebagger - 30.09.2021 19:58

Дружище, нравится твои видео, но тут просто эпик фэйл, потому что фабричный метод это совсем не то, что ты тут описываешь. Может хватит пилить видосы в 4 утра, лучше проспись.

Ответить
@malex81
@malex81 - 21.08.2021 12:34

Думал освежить память на тему различий фабричного метода и абстрактной фабрики. Что-то после видео только запутался

Ответить
@latte..
@latte.. - 11.08.2021 21:58

Drachun

Ответить
@user-jg9ci7be5x
@user-jg9ci7be5x - 20.07.2021 15:19

огонь
спасибо

Ответить
@suffocateforfucksake
@suffocateforfucksake - 15.06.2021 23:53

Тут не про фабричный метод, тут про абстрактную фабрику.

Ответить
@user-sr4nw2iu2u
@user-sr4nw2iu2u - 09.04.2021 19:30

Только фабричный метод это не класс, а метод со свитчем внутри в базовом классе, который по параметру и возвращает новый производный класс.

Ответить
@ciaoimsam2199
@ciaoimsam2199 - 02.04.2021 18:32

лучший
2021

Ответить
@youngwizard7711
@youngwizard7711 - 26.03.2021 11:18

Ничего не понимаю, но смотрю каждое видео

Ответить
@andreykatskin818
@andreykatskin818 - 23.03.2021 14:36

это шедевр )

Ответить
@user-xs9pl8gu8j
@user-xs9pl8gu8j - 19.03.2021 15:05

в пятницу например больше алкашей, а в четверг больше гопников, чтобы настрелят на алкашку

Ответить
@mehanoid41
@mehanoid41 - 15.03.2021 12:19

нихуя не понятно, поэтому дизлайк

Ответить
@neordinator
@neordinator - 27.02.2021 17:16

нихуя не понял, но очень интересно

Ответить
@KiraLis39
@KiraLis39 - 25.02.2021 13:27

тю.. всю жизнь так пишу, а что такое паттерны не пойму и по сей момент -_-
в прочем, я и в ООП не нашел ничего нового, странного или неестественного..

Ответить
@fyrich
@fyrich - 25.02.2021 02:10

как я вообще сюда попал.

Ответить
@disol588
@disol588 - 24.02.2021 18:11

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

Ответить
@12strel
@12strel - 21.02.2021 09:21

Ничего не понятно.

Ответить
@Joy-dn8yz
@Joy-dn8yz - 19.02.2021 21:44

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

Ответить
@KimarTV
@KimarTV - 05.02.2021 00:38

Голова болит

Ответить
@ymts_vladyslav3707
@ymts_vladyslav3707 - 17.01.2021 19:54

Чтооооо? Значит , сидишь такой ищешь документацию по фабричным методам , ничего не понимаешь прям от слова вообще , находишь объяснение с быдлами и всё понимаешь с первого раза, твои методы объяснения просто божественны

Ответить
@ryazanov13
@ryazanov13 - 13.01.2021 12:07

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

Ответить
@shlm3650
@shlm3650 - 18.05.2020 15:48

Чего то в гите ничего нет.

Ответить
@mirlaniusUMK
@mirlaniusUMK - 13.05.2020 08:07

ржу))) Полезно и просто, спасибо

Ответить
@kirillsviderski4739
@kirillsviderski4739 - 24.04.2020 16:19

Чуваки, но это ж не фабричный метод ( плак

Ответить
@LedoCool1
@LedoCool1 - 25.03.2020 10:30

Вабще пофиг.

Ответить
@user-hf6td1nd7c
@user-hf6td1nd7c - 27.02.2020 20:47

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

А теперь разъеб по фактам.

Автор начал рассказывать проблему и по-началу все было правильно до тех пор, пока он не перешел к решению. Представленное решение с выносом "порятнок" в отдельные классы и делегированию им логки порождения объектов - это не "Фабричный Метод", а "Абстрактная Фабрика". Шаблоны действителльно похожи и их часто путают или смешивают между собой, но в них есть кардинальные отличия и я объясню их.

Автор в конце видео верно заметил, что все шаблоны проектирования всегда решают какую то задачу или проблему, и именно в задачах кроется разница. Фабричный метод - это порождающий шаблон проектирования, смысл которого вынести логику создания объектов из абстракции в конкретные реализации этой абстракции. Что есть реализация, а что - абстракция? Абстракция - это некая логика работы программы. Эта логика не зависит от конкретных объектов и оперирует любыми из них одинаково. Для кода, содержащего абстрактную логику, в сущности, нет никакой разницы, с какими объектами он должен работать. Реализация - это, напротив, непосредственно детали, от которых зависит результат выполнения абстрактной логики.

Развивая пример автора в нужную сторону можно предположить, что для нашего супер-экшен-хорора существует множество локаций, одна из которых - это Парк. Объект Game отвечает лишь за то, чтобы собрать какую-то локацию и запустить в ней уровень, поэтому он откуда-то берет некий объект GameLocation и вызывает у него метод createLevel(). Метод createLevel() одинаковый для всех видов локаций - он создает объект персонажа, декорации, монстров, пасхалки, предметы для интерактива и много всего еще. Как читатель успел заметить, в описании работы метода createLevel() я оперирую абстрактными понятиями: "моб", "декорация", "предметы интерактива" и т.п. Для отработки этого кода не так уж важно, какие именно мобы создаются и как они выглядят. Главное - создать КАКИХ-ТО мобов с помощью метода createEnemy(). Также следует понимать, что локаций много и мобы в них разные. В локации Детской площадки мы создаем яжматерей и бабок у скамейки, в парке - гопников и алкашей, в собственной хате - пьяного батю и поехавшего деда. Именно от этой конкретики и зависит уровень, так что, избегая развесистого if с выбором нужного моба, делегируем реализацию этой конкретики наследникам объекта GameLocation - ParkLocation, ApartmentLocation, PlaygroundLoaction и реализуем в них абстрактный метод createEnemy(). Любой из этих методов может попасть к объекту Game и любой из них по-своему создает объекты, которые нужны в ходе работы метода gameLocation.createlevel(). Эти самые методы, создающие объекты, такие как createEnemy() и называются Фабричными методами.

Теперь о фабрике. Абстрактная фабрика - это порождающий шаблон проектирования, который позволяет инкапсулировать создание семейств объектов. В видео автор предложил инкапсулировать логику создания объектов в отдельную иерархию класса, но до конца пример не довел и не объяснил главное предназначение примененного приема. Дабы не уходить в сторону от показанного в видео, буду исходить из примера про уровни сложности локации Парк с минимальными корректировками. Представим, что нам нужно реализовать генерацию мобов по уровням сложности. У нас могут быть простые мобы, средние и сложные. Скажем, на легком уровне у нас будут создаваться (по возрастающей) Shkolnik, Alkash, Exhibitionist, на среднем - Alkash, Exhibitionist, Gopnik, на харде - Exhibitionist, Gopnik, BuhoyMent. Выносим методы createRegularEnemy, createMediumEnemy, createBossEnemy в один интерфейс IParkEnemyFactory и пишем три реализации - EasyPark, MiddlePark, HardPark, в которых создаются семейства объектов для каждого уровня.
Класс (интерфейс) IParkFactory - абстрактная фабрика, которая своими методами порождает объекты IEnemy, а ее реализации отвечают за создание семейств согласованных по смыслу объектов. Абстрактную фабрику может использовать класс GameLocation или Game и порождать монстров согласованно.
Резюмируя: Фабричный метод порождает объекты и его использование основано на наследовании, абстрактная фабрика порождает семейства объектов и ее использовании основано на композиции или агрегации.

P.S Всем дочитавшим печенек и много защекоинов.

Пойду, что-ли, свой канал по паттернам заведу.

Ответить
@evgenasd8892
@evgenasd8892 - 24.02.2020 18:25

Кто понял что к чему? 8*ой раз раз читаю код проекта (из гитхаба), ну ни как не получается вшить в голову, суть того как применяется. Да фабрики.. инкапсуляция, и синтаксис, Технически все понятно, НООО смысловая нагрузка для пере - использования подхода в своих проекта Ни как пока не пойму, как ....

Ответить
@peterswinoff1886
@peterswinoff1886 - 23.02.2020 21:31

Зачем создавать отдельный класс Фабрики, если можно всё это сделать в конструкторе Park???

Ответить
@stanislavshilo6022
@stanislavshilo6022 - 13.02.2020 20:07

douuuuu

Ответить
@d33pF41L
@d33pF41L - 11.02.2020 11:56

ты говно. я отписался

Ответить
@olexanderpotebenko1685
@olexanderpotebenko1685 - 10.02.2020 07:58

Слава Украйини

Ответить
@simeonapu435
@simeonapu435 - 09.02.2020 19:40

Про абстрактную фабрику давай!!)

Ответить
@user-xk2lb2ob8p
@user-xk2lb2ob8p - 25.01.2020 12:27

Самые нелепый паттерн в теории паттернов. Его всегда подают так как будто это что-то такое революционно сокращающее объем программного кода. На самом деле применяешь его или не применяешь - программный код совершенно одинаковый, и по объему и по сложности.

Ответить