Комментарии:
Сори за очепятки и оговорки. Монтажил в 4 утра :D
Ответитьэто не фабричный метод) он проще)
Ответитьзашумил восприятие матом и мемасиками, ничего не объяснил
ОтветитьБратан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
Ответитьоспади, что-ж так сложно - фабрика лепит экземпляры в зависимости от неких условий. Это не обязательно другое поведение, и не обязательно алкашей. Ты мудрено объясняешь довольно простые вещи, ударяясь в болтовню искажаешь смысл. Зачем?
ОтветитьЭто когда чоткий пацан решил инициализироватт интерфейс, но его название не пропустила IDE
Ответитьна самом деле я плохо понял
надо больше разжевать момент как плохой код зарефакторить в хороший используя паттерн
больше блок схем
Давай еще про паттерны и быдло!
ОтветитьДавай еще, буду смотреть все. И поржал и понял.
ОтветитьСупер!
ОтветитьАВтор конь рассказал по Абстрактную фабрику а не про Фабричный метод.
ОтветитьFactoryMethodLesson/CoolGood/Factory/Program.cs 34 строка комент с ошибкой( не благодари)
ОтветитьВ целом довольно не плохо интерпретировал, но вот за "var" в Cool Example я б спросил)))
ОтветитьА я юзаю сошник и мне поебать
Ответитьэммм обычный логический подход епта
ОтветитьАвтор: говорит "вобщем и целом". Щербаков: бляяяяяяяяяяяя
Ответитьтоп топ топ топ топ топ
ОтветитьДружище, нравится твои видео, но тут просто эпик фэйл, потому что фабричный метод это совсем не то, что ты тут описываешь. Может хватит пилить видосы в 4 утра, лучше проспись.
ОтветитьДумал освежить память на тему различий фабричного метода и абстрактной фабрики. Что-то после видео только запутался
ОтветитьDrachun
Ответитьогонь
спасибо
Тут не про фабричный метод, тут про абстрактную фабрику.
ОтветитьТолько фабричный метод это не класс, а метод со свитчем внутри в базовом классе, который по параметру и возвращает новый производный класс.
Ответитьлучший
2021
Ничего не понимаю, но смотрю каждое видео
Ответитьэто шедевр )
Ответитьв пятницу например больше алкашей, а в четверг больше гопников, чтобы настрелят на алкашку
Ответитьнихуя не понятно, поэтому дизлайк
Ответитьнихуя не понял, но очень интересно
Ответитьтю.. всю жизнь так пишу, а что такое паттерны не пойму и по сей момент -_-
в прочем, я и в ООП не нашел ничего нового, странного или неестественного..
как я вообще сюда попал.
ОтветитьЧем больше смотрю, тем больше убеждаюсь... Толковых людей, что умеют внятно обьяснить материал --- это не единицы! это еще меньше... в основном какие - то самоутверждающиеся выскочки, ищущий рейтинг или свое эго тешит... не понятно зачем такие пустые видео давать?! Ну если тебе от этого легче ... то поздравляю !!!!)))))
ОтветитьНичего не понятно.
ОтветитьКогда-то смотрел этот канал и для меня всё это было сложно...Теперь смотрю, вижу уже знакомые детали, иногда узнаю что-то новое и смеюсь от шуток (которые опять же, мне были непонятны) Да, немного, но личная победа, которой хочется поделиться
ОтветитьГолова болит
ОтветитьЧтооооо? Значит , сидишь такой ищешь документацию по фабричным методам , ничего не понимаешь прям от слова вообще , находишь объяснение с быдлами и всё понимаешь с первого раза, твои методы объяснения просто божественны
ОтветитьТы описал не фабричный метод, а абстрактную фабрику. Я бы описывал этот паттерн в сравнении с композицией и агрегацией, т.е. позволяющий контролировать время жизни объектов как в случае с композицией, но позволяя использовать полиморфизм как в случае с агрегацией.
ОтветитьЧего то в гите ничего нет.
Ответитьржу))) Полезно и просто, спасибо
ОтветитьЧуваки, но это ж не фабричный метод ( плак
ОтветитьВабще пофиг.
ОтветитьУвы, но это дизлайк. Подача с мемчиками и смехуечками - это прекрасно и действительно смотрится свежо, и не так "академически", как у многих авторов, но в данном видео есть одна большая проблема - содержание и проблемы с матчастью.
А теперь разъеб по фактам.
Автор начал рассказывать проблему и по-началу все было правильно до тех пор, пока он не перешел к решению. Представленное решение с выносом "порятнок" в отдельные классы и делегированию им логки порождения объектов - это не "Фабричный Метод", а "Абстрактная Фабрика". Шаблоны действителльно похожи и их часто путают или смешивают между собой, но в них есть кардинальные отличия и я объясню их.
Автор в конце видео верно заметил, что все шаблоны проектирования всегда решают какую то задачу или проблему, и именно в задачах кроется разница. Фабричный метод - это порождающий шаблон проектирования, смысл которого вынести логику создания объектов из абстракции в конкретные реализации этой абстракции. Что есть реализация, а что - абстракция? Абстракция - это некая логика работы программы. Эта логика не зависит от конкретных объектов и оперирует любыми из них одинаково. Для кода, содержащего абстрактную логику, в сущности, нет никакой разницы, с какими объектами он должен работать. Реализация - это, напротив, непосредственно детали, от которых зависит результат выполнения абстрактной логики.
Развивая пример автора в нужную сторону можно предположить, что для нашего супер-экшен-хорора существует множество локаций, одна из которых - это Парк. Объект 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 Всем дочитавшим печенек и много защекоинов.
Пойду, что-ли, свой канал по паттернам заведу.
Кто понял что к чему? 8*ой раз раз читаю код проекта (из гитхаба), ну ни как не получается вшить в голову, суть того как применяется. Да фабрики.. инкапсуляция, и синтаксис, Технически все понятно, НООО смысловая нагрузка для пере - использования подхода в своих проекта Ни как пока не пойму, как ....
ОтветитьЗачем создавать отдельный класс Фабрики, если можно всё это сделать в конструкторе Park???
Ответитьdouuuuu
Ответитьты говно. я отписался
ОтветитьСлава Украйини
ОтветитьПро абстрактную фабрику давай!!)
ОтветитьСамые нелепый паттерн в теории паттернов. Его всегда подают так как будто это что-то такое революционно сокращающее объем программного кода. На самом деле применяешь его или не применяешь - программный код совершенно одинаковый, и по объему и по сложности.
Ответить