Шаблоны разработки ПО. Шаблоны GoF. Часть 1

preview_player
Показать описание
Шаблоны разработки ПО. (Design patterns) Шаблоны GoF. Abstract Factory, Factory method

Рекомендации по теме
Комментарии
Автор

На данный момент, это лучшее что есть на ютубе про патерны, Сергей, респект

nikitoskh
Автор

Очень полезно про factory method. Сколько я читал в интернете про factory method до меня ни как не доходило зачем для создания каждой реализации интерфейса создавать отдельный класс создатель, оказалось просто незачем, и лучше пользоватся simple factory.

glebovskimalcovich
Автор

0:33 - О шаблонах GoF
1:59 - Типы шаблонов
5:13 - Абстрактная фабрика
26:53 - Абстрактная фабрика. Критика
30:20 - Фабричный метод

АндрейРогацкий
Автор

Сильно объяснили, особенно по теме Factory Method. Спасибо большое.

rakymzhankenzhegul
Автор

23:23. "Почему не скомпилируется? это скомпилируется. Это С++. Просто при попытке вызова вот здесь будет exception" - .. эммм.... да, скомпилируется, но не слинкуется. так что exception там не будет. exception - это run-time, а запускать будет нечего, ибо раз не слинкуется, то не будет бинарника. Вот именно что это с++. В остальном - спасибо, красиво и точно изложено.

teddybear
Автор

По поводу плюсового примера абстрактной фабрики: таки студент был (почти) прав насчёт "не скомпилится" :) Если быть более точным: скомпилится, но не слинкуется. Эксепшны C++ в таких случаях не бросает -- до них дело не доходит :) Плюсы подобные ошибки определяют не в рантайме, а на этапе компиляции и сборки. Вызов предварительно объявленного, но не реализованного метода, -- это ошибка линкера.
Но это всё придирки. Для объяснения данного паттерна совершенно неважно, как конкретно этот статический метод реализован, всё и без него было предельно понятно.

MaceUA
Автор

Здравствуйте, Сергей!
Есть ли оптимальный способ реализации factory method при постоянно растущей иерархии наследников? Нормально ли, постоянно увеличивающееся количество if в фабричном методе ?
Заранее спасибо!

АлександрЛебедько-дм
Автор

О блин, капец. В это время он ещё не был Сергеем Немчинским

DtqOrZZ_DcHLg
Автор

Неверно объясняет фабричный метод. В GoF подразумевалось, что когда внутри некоторого класса требуется использовать объект другого класса и при этом мы не хотим завязываться на конкретную реализацию, то можно создать фабричный метод, а сам класс сделать абстрактным. Таким образом получается что вся логика находится в абстрактном классе, а наследники абстрактного класса реализуя фабричный метод могут подменять объект, который используется в родительском классе. Шаблон позволяет переложить выбор конкретного объекта на классы наследники, а не принимать это решение на этапе проектирования родительского класса. Этот шаблон лучше объяснять после шаблона Template method, потому что они похожи и я думаю что в головах авторов template method и являлся прародителем фабричного метода. То что автор объяснил это не фабричный метод, это процедурная лапша на свитчах.

xfgweb
Автор

А чем Абстрактная фабрика отличается от Стратегии? В стратегии ведь также объявляется интерфейс и в него подставляются нужные реализации. Здесь тоже есть абстрактный класс файбрики, в которую подставляются конкретные реализации ВинФабрики и МакФабрики.

septembercult
Автор

Thanks so much for this video tutorial.

romantsyupryk
Автор

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

ventilyator
Автор

1:52 случайно включил титры:
"...так что видели сразу низкой где этом книжка порно львов -- википедия спасет всех"
:-) так дальше еще веселее -- микрофончик бы Вам.

ComradePashka
Автор

Не очень то мне нравится что то factory method...
Выходит что базовый класс обязан знать всех своих наследников. Как то не очень удобно. Добавляя новый класс, прийдется дописывать базовый, что не айс. :)
А так, очень даже интересно :)

aliorunity
Автор

Если классы наследуются не для полиморфизма, а для наследования общей логики, и вдруг в клиенте нужен геттер именно конкретного класса, то приходится использовать приведение типа к конкретному классу. Вся логика рушится, клиент зависит еще и от наследника. Как развязать? Ставить всем наследникам геттер с заглушками, проверять потом NULL или смириться с приведением?

ShurikProg
Автор

Сергей, спасибо. Но остался самый важный для меня вопрос. Это точно не попытка уколоть, а желание разобраться в происходящем. Поэтому прошу не обижаться и ответить на него: Почему вы в лекции употребляете жаргоны и иностранные слова вместо наиболее точных и широко понятных русских слов?
Дело в том, что таким образом вы закладываете использование таких слов в среде Ваших учеников. Очевидно, это способствует Вашей популярности и авторитету в среде обучающейся молодёжи, притоку учеников. Но это мешает пониманию значения и сути употребляемых слов. А как следствие приводит к абстрактному значению высказываемых ими предложений, сложности ясно понять и однозначно описать задачу. И как результат появляются проблемы взаимодействия при построении большой сложной системы так обученными программистами. А это уменьшает вероятность успешной автоматизации и создания надёжной удобной системы.

konstantinchvilyov
Автор

Лектор не знаєт что такое абстрактная фабрика, одним словом больше теоретик чем практик, уверен что если ему дать написать код то он не сделает Абстрактную фабрику без подказок с интернет.

mykolagg
welcome to shbcf.ru